Converti una string in php object JSON

Ho il seguente risultato da una query 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)"} ] } 

Attualmente è una string in PHP, c'è un modo semplice per convertire questo in un object JSON (so che è già in forma JSON).

Ho bisogno che sia un object in modo da poter aggiungere un object / elemento / object in più come quelli che sono già le coords

EDIT: SORRY GUYS, HO PASSATO UNA STRINGA VECCHIA / SBAGLIATA!

Quello che @deceze ha detto è corretto, sembra che il tuo JSON sia malformato, prova questo:

 { "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)" }] } 

Usa json_decode($string) per convertire String in Array / Object (stdClass): http://php.net/manual/en/function.json-decode.php

[modificato]

Non ho capito Che cosa intendi con "un object JSON ufficiale" , ma supponi di voler aggiungere contenuto a json via PHP e poi di convertirlo nuovamente in JSON?

supponendo di avere la seguente variabile:

 $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)"}]}'; 

Dovresti convertirlo in Array / Object (stdClass):

$manage = json_decode($data);

Ma lavorare con stdClass è più complicato di PHP-Array, quindi prova questo:

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

in questo modo è ansible utilizzare le funzioni dell'arrays: http://php.net/manual/en/function.arrays.php

aggiungendo un object:

 $manage = (arrays) 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); 

rimuovi il primo object:

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

qualsiasi possibilità tu voglia salvare in json su un database o un file :

 $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 = (arrays) 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); } 

Spero di aver capito la tua domanda.

In bocca al lupo.

Per convertire una string JSON valida, puoi utilizzare il metodo json_decode() .

Per riconvertirlo in un object usa questo metodo:

 $jObj = json_decode($jsonString); 

E per convertirlo in un arrays associativo, imposta il secondo parametro su true :

 $jArr = json_decode($jsonString, true); 

Tra l'altro per convertire la string menzionata in uno di questi, dovresti avere una string JSON valida. Per raggiungerlo, dovresti fare quanto segue:

  1. Coords , rimuovere i due " (virgolette doppie) dall'inizio e dalla fine dell'object.
  2. Gli oggetti in un arrays sono separati da virgola ( , ), quindi aggiungi virgole tra gli oggetti nell'arrays Coords .

E avrai una string JSON valida ..

Ecco la string JSON che ho convertito in una valida: http://pastebin.com/R16NVerw

Puoi usare

 $arrays = json_decode($sting,true) 

ma prima validationre il Json. Puoi validationre da http://jsonviewer.stack.hu/

Prova con json_encode() .

E guarda ancora Valida JSON