У меня есть следующая строка 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);