繁体   English   中英

json_decode不起作用

[英]json_decode not working

我有以下JSON:

{"easyStoreRelayList":[],"DecathlonStoreAreaNoStoreInGroup":"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio \"ACQUISTA ON LINE RITIRA IN NEGOZIO\" oppure non sono presenti negozi Decathlon.","warehouseRelayList":[],"DecathlonStoreAreaRememberMe":"Riconoscimi alla prossima visita","DecathlonWarehouseParcelSection":"Magazzini","DecathlonStoreParcelSection":"Negozio DECATHLON","DecathlonEasyStoreParcelSection":"Negozio DECATHLON EASY","geoName":"Alessandria","physicalStoreList":[["PS_IT_45","Serravalle Scrivia (Alessandria)","471",null,"7",null]]}

这是我尝试使用json格式的代码,这样我可以更轻松地处理信息。

//$html is the var containing the original string befora trying to parse it to JSON

    $html = stripslashes(str_replace('\"', '"', $html));
    $obj = json_decode($html,true);
    $obj = rtrim($obj, "\0");


    echo $obj["DecathlonStoreAreaNoStoreInGroup"];
    if(json_last_error() == 4){
        echo "ERROR";
    }

我一直收到以下错误:非法字符串偏移量'DecathlonStoreAreaNoStoreInGroup',错误4为“ json_last_error”。

任何人都知道它可能是什么,那不是正确解析json吗?

您的第一个问题是这一行:

$html = stripslashes(str_replace('\"', '"', $html));

解析JSON时,您无需执行任何此类操作。 如果JSON有效,则上述行将使其无效。 如果获取时无效,则该行中的任何内容都不足以对其进行修复。

因此,第一件事就是删除该行。

事实证明,您的JSON也无效。 它在由双引号引起来的字符串中包含双引号字符。

"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio "ACQUISTA ON LINE RITIRA IN NEGOZIO" oppure non sono presenti negozi Decathlon."

JSON的这一部分无效,并且无法通过json_encode()进行解析。

但是,您无法轻松地在PHP程序中解决此问题。 您需要修复生成此无效JSON的系统。 一旦它以无效字符串的形式到达您的PHP代码中,您将无能为力。

"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio "ACQUISTA ON LINE RITIRA IN NEGOZIO" oppure non sono presenti negozi Decathlon."

这里。 看起来您在主引号内使用了相同的引号,因此AQUISTA ON LINE ...被认为不在字符串内。 将其转换为:

“ Nella zona che hai selezionato nessun negozio十项全能运动'negozio线路ritira上的ACQUISTA线上运动'纯粹的非现在的negozi十项全能运动。

编辑: $html = stripslashes(str_replace('\\"', '"', $html)); 您不是说类似$html = stripslashes(str_replace('"', '\\"', $html));

"DecathlonStoreAreaNoStoreInGroup":"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio "ACQUISTA ON LINE RITIRA IN NEGOZIO" oppure non sono presenti negozi Decathlon."

上面的脚本有"字符串,它是无效的JSON格式之内。为了使它纠正把一个斜线之前"这样的字符串中。

"DecathlonStoreAreaNoStoreInGroup":"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio \"ACQUISTA ON LINE RITIRA IN NEGOZIO\" oppure non sono presenti negozi Decathlon."

有效的JSON是:

{  
   "easyStoreRelayList":[  

   ],
   "DecathlonStoreAreaNoStoreInGroup":"Nella zona che hai selezionato nessun negozio Decathlon al momento effettua il servizio \"ACQUISTA ON LINE RITIRA IN NEGOZIO\" oppure non sono presenti negozi Decathlon.",
   "warehouseRelayList":[  

   ],
   "DecathlonStoreAreaRememberMe":"Riconoscimi alla prossima visita",
   "DecathlonWarehouseParcelSection":"Magazzini",
   "DecathlonStoreParcelSection":"Negozio DECATHLON",
   "DecathlonEasyStoreParcelSection":"Negozio DECATHLON EASY",
   "geoName":"Alessandria",
   "physicalStoreList":[  
      [  
         "PS_IT_45",
         "Serravalle Scrivia (Alessandria)",
         "471",
         null,
         "7",
         null
      ]
   ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM