无法解码JSON API响应

时间:2014-10-20 17:08:53

标签: php json parsing

我为我的运费报价系统构建了一个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&ltl_shipment=X&Residential_Delivery=X');
    echo $input;

    $obj = json_decode($input);
    var_dump($obj);

    ?>

4 个答案:

答案 0 :(得分:0)

您是否尝试过以下

    $array = json_decode($data, true);

答案 1 :(得分:0)

摘要

内置函数json_decodesee 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和解码功能起作用。

http://trumrates.com/trumrates/rate/quote/signin/api_request.php?dest_zip=66101&weight=200&class=50&ltl_shipment=X&Residential_Delivery=X

收率:

{"carrier":"R&L Carriers","charge":"99.13","service_days":"Wednesday Oct. 22, 2014"} </div>

答案 3 :(得分:0)

当我编写我使用的代码时,输​​入&#39;给我代码行之间的空格。由于某种原因,转换为JSON,这就是为什么它不起作用。我刚刚删除了文件中所有额外的空行,但它确实有效。