我正在尝试将响应编码为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值。
答案 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;