簡體   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