我一直使用json_decode获取Array to string conversion错误

时间:2017-03-23 23:43:43

标签: php mysql arrays json

我正在尝试转换从我的mySQL数据库中提取的php中的Json字符串。我使用json_decode成功使用其他类似的字符串,但出于某种原因我尝试解码此字符串时:

$Json ='{"S1": "15,2,0,4,0,0,1","S2": "50,0,99,1,5,1,1,0"}';

json_decode($Json, true);

我收到错误'Array to string conversion'。

我用这个字符串成功地做了同样的事情,

[{"group":"new","users":",12345678","S1":"56,3,0,0,0,6,0","S2":"0,0,49,0,4,0,0,0","enabled":"1","admin":"1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0"}]

我不知道两者之间的区别是什么,因为它们都来自同一个数据库,并且都成功验证了Json。有人能告诉我如何成功转换这个,以便我可以让json_decode成功地工作吗?感谢。

**更新:这是我正在使用的实际代码

$tmpUserJson = $row['JSONSettings’];    

$tmpUserJson='['.$tmpUserJson.']'; ///I’ve tried with and without brackets    

echo $tmpUserJson; //returns {"S1":"15,2,0,4,0,0,1","S2":"50,0,99,1,5,1,1,0”}    

$userJson = json_decode( $tmpUserJson , true);    

echo $userJson['S1']; // returns Notice: Array to string conversion    

2 个答案:

答案 0 :(得分:1)

我认为你得到它是因为你试图回应一个数组。 试试:

$Json ='{"S1": "15,2,0,4,0,0,1","S2": "50,0,99,1,5,1,1,0"}';

$Json = json_decode($Json);

foreach( $Json as $item ){
    echo $item. "<br />";
}

或者你可以var_dump你的结果:     $ Json =&#39; {&#34; S1&#34;:&#34; 15,2,0,4,0,0,1&#34;,&#34; S2&#34;:&#34 ; 50,0,99,1,5,1,1,0&#34;}&#39 ;;

$Json = json_decode($Json);

var_dump($Json);

答案 1 :(得分:1)

$userJson = json_decode( $tmpUserJson , true);// this line return an associative array    

echo $userJson; // echo can't echo out an array that's why you got that error

正如@David所提到的,如果你想要回显$userJson,那么你有几个选择:
1:循环遍历数组元素,例如:foreach($userJson as $value){ echo $value;}
2用于测试目的:您可以使用$userJsonvar_dump($userJson)查看print_r($userJson)数据; 祝你好运