Преобразование строки JSON в PHP-массив

У меня есть следующая строка JSON, которая была массивом Objective C, а затем закодирована в JSON:

$jsonString=[\"a@gmail.com\",\"b@gmail.com\",\"c@gmail.com\"] 

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

 $arrayOfEmails=json_decode($jsonString); //doesn't work $arrayOfEmails=(array)json_decode($jsonString); //doesn't work 

Есть идеи?

Редактировать:

Я все еще не работаю.

 $decodeEmails=$_POST["arrayOfEmails"]; sendResponse(200, $decodeEmails); //the above returns exactly whats after this colon:[\"a@gmail.com\",\"b@gmail.com\",\"c@gmail.com\] 

Мне нужно сделать это: $arrayOfEmails=json_decode($decodeEmails); Но я думаю, что мне нужны котировки вокруг $ decodedEmails для этого. Как добавить цитаты вокруг строки $ decodeEmails?

Вы должны процитировать свою строку, она отлично работает, см. Здесь .

 $jsonString = '["m@gmail.com","b@gmail.com","c@gmail.com"]'; $arrayOfEmails=json_decode($jsonString); 

Или

 $jsonString = "[\"a@gmail.com\",\"b@gmail.com\",\"c@gmail.com\"]"; $arrayOfEmails=json_decode($jsonString); 

Попробуйте это: json_decode($json_string, true);

 $data = unserialize($data) 

теперь u может получить $ data как массив

Например, данные $ имеют такое значение, как это

$ data = "a: 2: {s: 18:" _ 1337666504149_149 "; a: 2: {s: 8:" fbregexp "; s: 1:" 1 "; s: 5:" value "; s: 4: "2222";} s: 18: "_ 1337666505594_594"; а: 2: {s: 8: "fbregexp"; s: 1: "3"; s: 5: "значение"; s: 5: "45555"; }} ";

 $data = unserialize($data) 

теперь я получаю такую ​​ценность

 Array ( [fbregexp] => 1 [value] => 2222 ) [_1337666505594_594] => Array ( [fbregexp] => 3 [value] => 45555 ) ) 
  $str=<<<H {"a":"AAA","b":"333"} H; $object = json_decode($str); $array = json_decode($str , 1 ); // $arr = get_object_vars( json_decode($str) ); 

Если json_decode не работает, вы можете попробовать что-то вроде этого:

 $arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 3 ) ); 

Вы можете использовать json_decode (), а затем print_r () для создания массива в формате PHP

 <?php $json = file_get_contents('json/yourscript.json'); // Get the JSON data $phpObj = json_decode($json,true); // Convert to PHP Object print_r($phpObj); // Convert to PHP Array ?> 

Этот код работает отлично.

 $jsonString = '["m@gmail.com","b@gmail.com","c@gmail.com"]'; $arrayOfEmails=json_decode($jsonString); $arrayOfEmails=(array)json_decode($jsonString); print_r($arrayOfEmails); 

Предполагая, что в вашем JSON отсутствует кавычки, это ошибка транспонирования во время публикации, тогда код, который вы используете, хорош: http://codepad.org/RWEYM42x

Вам нужно убедиться, что ваша строка кодируется UTF8. Вы можете использовать встроенный кодировщик, если это не так ( http://php.net/manual/en/function.utf8-encode.php ).

Для получения дополнительной помощи вам нужно фактически сообщить нам, что вы получаете с кодом.

 $arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 3 ) ) 

Это решение хорошо, но для получения полного массива я использую strlen( $json ) - 6 , поэтому он должен быть:

 $arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 6 ) ); var_dump($arr);