我有以下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);
但我认为我需要在$ decodingEmails周围引用才能使用它。如何在$ decodeEmails字符串周围添加引号?
答案 0 :(得分:10)
试试这个:
json_decode($json_string, true);
答案 1 :(得分:9)
你应该引用你的字符串,它可以正常工作,see here。
$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);
答案 2 :(得分:3)
$data = unserialize($data)
现在你可以将$ data作为数组
例如 $ data的值如下
$ data = “一个:2:{S:18:” _ 1337666504149_149 “;一个:2:{S:8:” fbregexp “; S:1:” 1 “; S:5:” 值 “; 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 ) )
答案 3 :(得分:2)
$str=<<<H
{"a":"AAA","b":"333"}
H;
$object = json_decode($str);
$array = json_decode($str , 1 );
// $arr = get_object_vars( json_decode($str) );
答案 4 :(得分:1)
如果json_decode
无效,您可以尝试这样的事情:
$arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 3 ) );
答案 5 :(得分:1)
您可以使用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
?>
答案 6 :(得分:0)
此代码工作正常。
$jsonString = '["m@gmail.com","b@gmail.com","c@gmail.com"]';
$arrayOfEmails=json_decode($jsonString);
$arrayOfEmails=(array)json_decode($jsonString);
print_r($arrayOfEmails);
答案 7 :(得分:0)
假设问题中JSON周围缺少引号是在发布过程中发生转置错误,那么您使用的代码就可以了:http://codepad.org/RWEYM42x
您需要确保您的字符串是UTF8编码的。如果不是(http://php.net/manual/en/function.utf8-encode.php),您可以使用内置编码器。
如需进一步的帮助,您需要实际告诉我们您 获取代码的内容。
答案 8 :(得分:-2)
$arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 3 ) )
此解决方案很好但是为了使用strlen( $json ) - 6
获取完整有效的数组,所以应该是:
$arr = explode( '\\",\\"', substr( $json, 3, strlen( $json ) - 6 ) );
var_dump($arr);