Преобразование строки в объект JSON php

У меня есть следующий результат из SQL-запроса:

{"Coords":[ {"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"}, {"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"}, {"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"}, {"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}, {"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"} ] } 

В настоящее время это строка в php, есть простой способ преобразовать ее в объект JSON (я знаю, что это уже в форме JSON).

Мне нужно, чтобы это был объект, поэтому я могу добавить дополнительный элемент / элемент / объект, например, какие

РЕДАКТИРУЙТЕ: ИЗВЕСТНЫЕ ПАРЫ, Я ПОСТАВИЛ СТАРУЮ / НЕПРАВИЛЬНУЮ СТРИНУЮ!

То, что сказал @deceze, верен, кажется, что ваш JSON искажен, попробуйте следующее:

 { "Coords": [{ "Accuracy": "30", "Latitude": "53.2778273", "Longitude": "-9.0121648", "Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)" }, { "Accuracy": "30", "Latitude": "53.2778273", "Longitude": "-9.0121648", "Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)" }, { "Accuracy": "30", "Latitude": "53.2778273", "Longitude": "-9.0121648", "Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)" }, { "Accuracy": "30", "Latitude": "53.2778339", "Longitude": "-9.0121466", "Timestamp": "Fri Jun 28 2013 11:45:54 GMT+0100 (IST)" }, { "Accuracy": "30", "Latitude": "53.2778159", "Longitude": "-9.0121201", "Timestamp": "Fri Jun 28 2013 11:45:58 GMT+0100 (IST)" }] } 

Используйте json_decode($string) для преобразования String в Array / Object (stdClass): http://php.net/manual/en/function.json-decode.php

[редактировать]

Я не понял. Что вы подразумеваете под «официальным объектом JSON» , но предположите, что хотите добавить контент в json через PHP, а затем преобразовать его прямо в JSON?

если у вас есть следующая переменная:

 $data = '{"Coords":[{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}]}'; 

Вы должны преобразовать его в Array / Object (stdClass):

$manage = json_decode($data);

Но работа с stdClass более сложна, чем PHP-Array, а затем попробуйте следующее:

$manage = (array) json_decode($data);

таким образом вы можете использовать функции массива: http://php.net/manual/en/function.array.php

добавление элемента:

 $manage = (array) json_decode($data); echo 'Before: <br>'; print_r($manage); $manage['Coords'][] = Array( 'Accuracy' => '90' 'Latitude' => '53.277720488429026' 'Longitude' => '-9.012038778269686' 'Timestamp' => 'Fri Jul 05 2013 11:59:34 GMT+0100 (IST)' ); echo '<br>After: <br>'; print_r($manage); 

удалить первый элемент:

 $manage = (array) json_decode($data); echo 'Before: <br>'; print_r($manage); array_shift($manage['Coords']); echo '<br>After: <br>'; print_r($manage); 

любой шанс, который вы хотите сохранить в json для базы данных или файла :

 $data = '{"Coords":[{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}]}'; $manage = (array) json_decode($data); $manage['Coords'][] = Array( 'Accuracy' => '90' 'Latitude' => '53.277720488429026' 'Longitude' => '-9.012038778269686' 'Timestamp' => 'Fri Jul 05 2013 11:59:34 GMT+0100 (IST)' ); if(($id = fopen('datafile.txt','w'))){ fwrite($id,json_encode($manage)); fclose($id); } 

Надеюсь, я понял ваш вопрос.

Удачи.

Чтобы преобразовать верную строку JSON, вы можете использовать метод json_decode() .

Чтобы преобразовать его обратно в объект, используйте этот метод:

 $jObj = json_decode($jsonString); 

И чтобы преобразовать его в ассоциативный массив, установите для второго параметра значение true :

 $jArr = json_decode($jsonString, true); 

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

  1. В массиве Coords удалите две " метки двойной кавычки» с начала и конца объекта.
  2. Объекты в массиве разделены запятыми ( , ), поэтому добавьте запятые между объектами в массиве Coords .

И у вас будет действующая строка JSON.

Вот ваш JSON String, который я преобразовал в действительный: http://pastebin.com/R16NVerw

вы можете использовать

 $array = json_decode($sting,true) 

но подтвердите Json раньше. Вы можете подтвердить это из http://jsonviewer.stack.hu/

Попробуйте использовать json_encode() .

И посмотрите снова Действительный JSON