我收到此错误语法错误,格式错误的JSON

时间:2015-07-25 00:42:30

标签: php json api

我将Lightspeed API整合到我的网站,如POS系统。我目前得到的值是file_get_contents(),但是当我试图加载它时,我给出了json_last_error()的错误4。

这是我的代码:

$maps_url = "http://cloud-docs.merchantos.com/API/Account/797/Item/?itemID=1";

$maps_json = file_get_contents($maps_url);  
//print_r($maps_json);

$maps_array = json_decode(stripslashes($maps_json), true);
echo $data = $maps_array['Item']['systemSku'];


    switch (json_last_error()) {
case JSON_ERROR_NONE:
    echo ' - No errors';
    break;
case JSON_ERROR_DEPTH:
    echo ' - Maximum stack depth exceeded';
    break;
case JSON_ERROR_STATE_MISMATCH:
    echo ' - Underflow or the modes mismatch';
    break;
case JSON_ERROR_CTRL_CHAR:
    echo ' - Unexpected control character found';
    break;
case JSON_ERROR_SYNTAX:
    echo ' - Syntax error, malformed JSON';
    break;
case JSON_ERROR_UTF8:
    echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
    break;
default:
    echo ' - Unknown error';
    break;
    }

json_last_error();

2 个答案:

答案 0 :(得分:2)

然后让我重新说一下:

  • 显示的网址检索 JSON
  • 它提取 XML
  • 因此json_decode失败。
  • 因此$maps_url中没有可用的数据。
  • 这也是['Item']['systemSku'] 赢得的原因。
  • (而且stripslashes无论如何都没有任何意义。)

因此,请调查您正在使用的API。弄清楚是否有可用的JSON变体。否则抛弃你的代码,而是使用XML遍历前端,例如SimpleXML

答案 1 :(得分:0)

正如马里奥所说,$ maps_url接收XML。

查看xml_parse_into_struct以获取有关XML到阵列转换的帮助。