Json字符串转换为json对象

时间:2017-11-20 15:57:25

标签: php arrays json object

我一直陷入这个问题,似乎无法解决它..我有这个JSON STRING

$unBillableArr = ["{'id' : '123','to' : '+923412268656','MsgReceivedFrom' : '03349433314', 'message':'Qwertyy ', 'recdate':'2017-11-20 19:01:49'}"];

我需要将它转换为对象数组或者只是一个json对象..我已经尝试过了

json_decode($unBilledArr , true);

它给了我null。

已经尝试过这些解决方案

Convert a string to JSON object php

https://jonsuh.com/blog/convert-loop-through-json-php-javascript-arrays-objects/

我一定是做错了什么..似乎无法弄清楚是什么......

P.s:这是我得到的回应,我无法对回应做任何事情。

1 个答案:

答案 0 :(得分:1)

您正在尝试解码数组,指定数组中的特定项目,或将其设为字符串。

例如:

$unBillableArr = '{"id":"123", "to":"+923412268656", "MsgReceivedFrom":"03349433314", "message":"Qwertyy", "recdate":"2017-11-20 19:01:49"}';

$json = json_decode($unBillableArr, true);

// Or

$unBillableArr = ['{"id":"123", "to":"+923412268656", "MsgReceivedFrom":"03349433314", "message":"Qwertyy", "recdate":"2017-11-20 19:01:49"}'];

$json = json_decode($unBillableArr[0], true);

但是,如果您收到的字符串不包含有效的JSON,并且您无法控制收到的内容,我准备了以下内容来替换JSON中的单引号,并将每个项解码为数组:< / p>

$unBillableArr = ["{'id' : '123','to' : '+923412268656','MsgReceivedFrom' : '03349433314', 'message':'Qwertyy ', 'recdate':'2017-11-20 19:01:49'}"];

// Loop through each JSON string
$jsonObjects = []; // Change this name...
foreach ($unBillableArr as $jsonString) {
    $jsonObjects[] = json_decode(str_replace("'", '"', $jsonString), true);
}

print_r($jsonObjects); // Proof it works

请记住,我认为这是一个肮脏的修复。要正确解决此问题,您应该返回源代码并确保他们返回给您的JSON有效。