将JSON字符串转换为PHP数组

时间:2012-02-07 03:33:24

标签: php json

我有以下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字符串周围添加引号?

9 个答案:

答案 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);