我为我的运费报价系统构建了一个API。我给它提供了价值,我得到了报价。它工作正常,但我无法解码JSON响应。我得到一个NULL响应,我不确定是什么。根据验证者的说法,JSON是正确的。
所以我基本上做的是在一边编码PHP数组,我想在另一边使用浏览器和PHP解析它。但是,我得到一个NULL响应。
这是JSON。如果您需要更多,请告诉我。
{"carrier":"R&L Carriers","charge":"99.13","service_days":"Wednesday Oct. 22, 2014"}
我只想解码这个,所以我可以解析它。如果还有其他解析方式,请告诉我。
另外,我搜索了SOF,人们在这里遇到的类似问题对我没有帮助。
这是我用来生成JSON的代码。
<?php
//include ('mysql_connect.php');
$result = mysql_query('select * from quote where user_id = "'.$user_id.'" order by netCharge asc limit 1');
if (!$result) {
die('Could not query:' . mysql_error());
}
if (!$result) echo mysql_error();
$api_data = array();
$api_count = '0';
while ($row = mysql_fetch_array($result, MYSQLI_ASSOC)) {
$api_data[carrier] = $row['carrier'];
$api_data[charge] = $row['netCharge'];
$api_data[service_days] = $row['serviceDays'];
$api_count++;
}
$api_data = json_encode($api_data);
print_r($api_data);
?>
这就是我用来抓取JSON数据的原因:
<?php
$input = file_get_contents('api_request.php?dest_zip=66101&weight=200&class=50<l_shipment=X&Residential_Delivery=X');
echo $input;
$obj = json_decode($input);
var_dump($obj);
?>
答案 0 :(得分:0)
您是否尝试过以下
$array = json_decode($data, true);
答案 1 :(得分:0)
内置函数json_decode
(see doc)应该有所帮助。根据官方文件NULL is returned if the JSON cannot be decoded or if the encoded data is deeper than the recursion limit.
我怀疑你读的JSON字符串实际上与PHP读取的字符串不一样。请确保字符串不是HTML转义的。并且非常重要,JSON中的键和值应该用双引号引用。单引号是格式错误的JSON,可能被视为语法错误。
要成为一个好的演示,我将json字符串放入文件中,然后使用test.php
对其进行解码。
在example.json
:
{"carrier":"R&L Carriers","charge":"99.13","service_days":"Wednesday Oct. 22, 2014"}
在test.php
:
<?php
$input = file_get_contents('example.json');
echo $input;
// {"carrier":"R&L Carriers","charge":"99.13","service_days":"Wednesday Oct. 22, 2014"}
$obj = json_decode($input);
var_dump($obj);
// object(stdClass)#1 (3) {
// ["carrier"]=>
// string(12) "R&L Carriers"
// ["charge"]=>
// string(5) "99.13"
// ["service_days"]=>
// string(23) "Wednesday Oct. 22, 2014"
// }
答案 2 :(得分:0)
您的回复中有一个额外的</div>
。
删除div以使有效的JSON和解码功能起作用。
收率:
{"carrier":"R&L Carriers","charge":"99.13","service_days":"Wednesday Oct. 22, 2014"}
</div>
答案 3 :(得分:0)
当我编写我使用的代码时,输入&#39;给我代码行之间的空格。由于某种原因,转换为JSON,这就是为什么它不起作用。我刚刚删除了文件中所有额外的空行,但它确实有效。