PHP JSON编码问题

时间:2015-10-09 10:37:41

标签: php json

我正在尝试将响应编码为JSON,因此我可以从中提取一些数据。

数据是:

{ "StatusCode": 0, "StatusInfo": "Command Processed OK",
"BranchNumber": "1000", "CustomerId": "98295950", "CustomerName":
"Mrs. Anonymously-Loggedin", "SessionKey":
"jBRBVlf35xFhIoq5nLQ5yaVpR2TjIDIEjBbyh5yYRW5Ky8bDG4",
"InAmendOrderMode": "N", "BasketID": "", "ChosenDeliverySlotInfo":
"Not applicable with anonymous login", "CustomerForename": "" }

我跑:

$result = json_encode($result);
echo $result; 

得到' true'。

我做错了什么?

注意:这不是某人无法使用JSON_Decode;这是一个真正的问题,我已经尝试将其视为对象,编码/解码为JSON / UTF-8,但我得到的只是错误或NULL值。

4 个答案:

答案 0 :(得分:1)

数据已经过JSON编码。要使用它,您需要使用json_decode对其进行解码,如下所示:

$result = '{ "StatusCode": 0, "StatusInfo": "Command Processed OK", "BranchNumber": "1000", "CustomerId": "98295950", "CustomerName": "Mrs. Anonymously-Loggedin", "SessionKey": "jBRBVlf35xFhIoq5nLQ5yaVpR2TjIDIEjBbyh5yYRW5Ky8bDG4", "InAmendOrderMode": "N", "BasketID": "", "ChosenDeliverySlotInfo": "Not applicable with anonymous login", "CustomerForename": "" }';

修改

根据您的评论,我认为$result是一个javascript对象,而不是文字JSON字符串,在这种情况下,您可能需要将其括在引号中,如下所示:

$data   = json_decode( "'$result'", true);

然后,您可以继续访问数据成员:

$status_code = $data['StatusCode'];
$status_info = $data['StatusInfo'];
...

我希望你能从那里拿走它。

答案 1 :(得分:1)

<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);


$url = 'https://secure.techfortesco.com/tescolabsapi/restservice.aspx?';

$result = file_get_contents(http://...);

$result = json_decode($result); 
echo $result->StatusCode;

?>

使用file_get_contents而不是cURL解决并将其视为对象。 的修改 看起来cURL返回一个合适的JSON对象,该对象不能被解码,也不能被视为字符串。

答案 2 :(得分:1)

这对我来说很有效。

$result = json_decode('jsonGoesHere'); echo $result->StatusCode;

确保您的数据以字符串形式输入,否则会中断。

答案 3 :(得分:0)

$ result是一个对象:

$result = json_decode('{ "StatusCode": 0, "StatusInfo": "Command       Processed OK", "BranchNumber": "1000", "CustomerId": "98295950", "CustomerName": "Mrs. Anonymously-Loggedin", "SessionKey": "jBRBVlf35xFhIoq5nLQ5yaVpR2TjIDIEjBbyh5yYRW5Ky8bDG4", "InAmendOrderMode": "N", "BasketID": "", "ChosenDeliverySlotInfo": "Not applicable with anonymous login", "CustomerForename": "" }');

echo $result->StatusCode;
echo $result->StatusInfo;