2014-02-03 3 views
0

Я использую плагин Wordpress JSON API для создания JSON для использования в мобильном приложении.Parse serialized JSON

Данные из пользовательских полей в пользовательских типах почтовых в Wordpress (созданных с помощью плагина под названием WCK)

Выписки из JSON из WordPress пользовательских полей выглядит следующим образом

custom_fields: { 
sitedetails: [ 
"a:1:{i:0;a:5:{s:14:"site-reference";s:4:"A428";s:9:"site-name";s:11:"Main street";s:16:"site-description";s:19:"A great development";s:10:"site-image";s:2:"70";s:24:"site-data-version-number";s:3:"1.0";}}" 
], 
plotdetails: [ 
"a:1:{i:0;a:7:{s:14:"plot-reference";s:5:"A4282";s:12:"plot-address";s:42:"9 Highers Way Threwsbury Thropshire XY11AA";s:10:"plot-image";s:2:"70";s:12:"map-latitude";s:9:"22.111122";s:13:"map-longitude";s:9:"-9.334455";s:13:"plot-postcode";s:7:"XY11AA";s:24:"plot-data-version-number";s:3:"1.0";}}" 
], 
ownersdetails: [ 
"a:0:{}" 
], 
housingassociation: [ 
"a:0:{}" 
], 
movingin: [ 
"a:1:{i:0;a:1:{s:16:"moving-in-advice";s:91:"Make sure you know where the various stop-valves and main electrical switches are located. ";}}" 
], 
repairstoyourhome: [ 
"a:1:{i:0;a:5:{s:14:"repairs-advice";s:9:"Take care";s:12:"phone-number";s:13:"";s:7:"website";s:21:"http://www.google.com";s:5:"email";s:16:"[email protected]";s:24:"repairs-additional-notes";s:11:"Please call";}}" 
], 
certificates: [ 
"a:5:{i:0;a:3:{s:16:"certificate-name";s:34:"NICEIC Electrical Test Certificate";s:17:"certificate-notes";s:24:"Refer to your paper copy";s:20:"certificate-document";s:0:"";}i:1;a:3:{s:16:"certificate-name";s:20:"Gas Safe Certificate";s:17:"certificate-notes";s:24:"Refer to your paper copy";s:20:"certificate-document";s:0:"";}i:2;a:3:{s:16:"certificate-name";s:23:"Smoke Alarm Certificate";s:17:"certificate-notes";s:19:"Refer to paper copy";s:20:"certificate-document";s:0:"";}i:3;a:3:{s:16:"certificate-name";s:30:"Energy Performance Certificate";s:17:"certificate-notes";s:19:"Refer to paper copy";s:20:"certificate-document";s:0:"";}i:4;a:3:{s:16:"certificate-name";s:29:"Sustainable Homes Certificate";s:17:"certificate-notes";s:19:"Refer to paper copy";s:20:"certificate-document";s:0:"";}}" 
], 

Большинство данных JSON можно легко получить с помощью «$ .each». Но custom_fields содержит данные, которые, как представляется, сериализованы в массивах (есть «поля повторителя», которые имеют префикс: n, где a указывает массив, а n - количество вхождений этого массива (я думаю).

, Я ищу легкий способ десериализации данных, так что я могу получить доступ к каждому массиву и каждый элемент массива.

кто-нибудь делало это и есть пример?

я могу получить доступ конкретное пользовательское поле, использующее (например)

data.post.custom_fields.sitedetails 
data.post.custom_fields.plotdetails 

и т. Д.

Но не удается найти простой способ jquery распаковать сериализованные данные.

Код использует Ajax для загрузки JSON в мобильном приложении jquery.

ответ

0

вар

obj = JSON.parse(yourJsonVariable); 

но ваш JSON находится на полном мальформации ...

заканчивается запятой ... и объекты, такие как сертификаты отсутствуют спецсимволы:

certificates: [ 
"a:5:{i:0;a:3:{s:16:\"certificate-name\";s:34:\"NICEIC Electrical Test Certificate\";s:17:\"certificate-notes\";s:24:\"Refer to your paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:1;a:3:{s:16:\"certificate-name\";s:20:\"Gas Safe Certificate\";s:17:\"certificate-notes\";s:24:\"Refer to your paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:2;a:3:{s:16:\"certificate-name\";s:23:\"Smoke Alarm Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:3;a:3:{s:16:\"certificate-name\";s:30:\"Energy Performance Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:4;a:3:{s:16:\"certificate-name\";s:29:\"Sustainable Homes Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}}" 
], 

после этого вы shoud разбираете его как доступный:

obj = JSON.parse(youJsonVariable); 
obj.custom_fields.certificates[0]; 
+0

Спасибо. Я попытался сделать JSON доступным для чтения. На самом деле это выглядит так: – scadger

0

Actual JSON, как получил в JQuery: -

"custom_fields":{"sitedetails":["a:1:{i:0;a:5:{s:14:\"site-reference\";s:4:\"A428\";s:9:\"site-name\";s:11:\"Main street\";s:16:\"site-description\";s:19:\"A great development\";s:10:\"site-image\";s:2:\"70\";s:24:\"site-data-version-number\";s:3:\"1.0\";}}"],"plotdetails":["a:1:{i:0;a:7:{s:14:\"plot-reference\";s:5:\"A4282\";s:12:\"plot-address\";s:42:\"9 Highers Way\nThrewsbury\nThropshire\nXY11AA\";s:10:\"plot-image\";s:2:\"70\";s:12:\"map-latitude\";s:9:\"22.112233\";s:13:\"map-longitude\";s:9:\"-9.121212\";s:13:\"plot-postcode\";s:7:\"XY1 1AA\";s:24:\"plot-data-version-number\";s:3:\"1.0\";}}"],"ownersdetails":["a:0:{}"],"housingassociation":["a:0:{}"],"movingin":["a:1:{i:0;a:1:{s:16:\"moving-in-advice\";s:91:\"Make sure you know where the various stop-valves and main electrical switches are located.\n\";}}"],"repairstoyourhome":["a:1:{i:0;a:5:{s:14:\"repairs-advice\";s:9:\"Take care\";s:12:\"phone-number\";s:13:\"\";s:7:\"website\";s:21:\"http:\/\/www.google.com\";s:5:\"email\";s:16:\"[email protected]\";s:24:\"repairs-additional-notes\";s:11:\"Please call\";}}"],"certificates":["a:5:{i:0;a:3:{s:16:\"certificate-name\";s:34:\"NICEIC Electrical Test Certificate\";s:17:\"certificate-notes\";s:24:\"Refer to your paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:1;a:3:{s:16:\"certificate-name\";s:20:\"Gas Safe Certificate\";s:17:\"certificate-notes\";s:24:\"Refer to your paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:2;a:3:{s:16:\"certificate-name\";s:23:\"Smoke Alarm Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:3;a:3:{s:16:\"certificate-name\";s:30:\"Energy Performance Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}i:4;a:3:{s:16:\"certificate-name\";s:29:\"Sustainable Homes Certificate\";s:17:\"certificate-notes\";s:19:\"Refer to paper copy\";s:20:\"certificate-document\";s:0:\"\";}}"],