簡體   English   中英

json_decode不適用於php

[英]json_decode not working with php

我的json正在到達服務器:

[{“顏色”:“紅色”,“尺寸”:“ YXS”,“數量”:“ 10”}]],[{“顏色”:“藍色”,“尺寸”:“ YXS”,“數量”: “ 10”}]

但是,json_decode無法在服務器之后將其轉換回對象。 使用var_dump,該對象為null。 我可以print_r變量,它可以正常打印。

有任何想法嗎? (我看到還提交了其他問題,但是我已經嘗試了所有這些問題,但沒有任何效果)。

在javascript中構建JSON字符串,它將保存到隱藏的表單字段中。

     var str = ""; 
     for(i=0;i<orderDetails.length;i++){
           str += JSON.stringify(orderDetails[i]) + ",";
     }

在顯示頁面上,我有:

  <hr />

<?php



var_dump(json_decode(($orderData)));

?>

print_r($ orderData); 顯示我粘貼的字符串。

json_decode($ orderData)為空

編輯:

我更改了JSON構建器,以刪除中間的括號,如@PaulPro建議。

     var str = ""; 
     for(i=0;i<orderDetails.length;i++){
           str += JSON.stringify(orderDetails[i]) + ",";
     }
     str = str.substr(0,str.length-1); // remove last comma
     str = str.replace("],[",","); // remove brackets in the middle

那不是JSON,它看起來像兩個用逗號連接的JSON數組。 如果整個內容都被[]包圍成一個數組數組,那么它將是有效的JSON:

[[{"color":"Red","size":"YXS","quantity":"10"}],[{"color":"Blue","size":"YXS","quantity":"10"}]]

這也將是有效的,如果你更換了],[只是一個對象之間,

[{"color":"Red","size":"YXS","quantity":"10"},{"color":"Blue","size":"YXS","quantity":"10"}]

為了將來參考,可以使用json_last_error和PHP 5.5+ json_last_error_msg來幫助調試json_decode和json_encode的問題。

刪除逗號附近的方括號,它將起作用! 實際上,在外部數組之間有兩個數組,必須在json字符串的末尾加上一個方括號,並在json字符串的末尾加上一個閉合的方括號以使其起作用。

您收到此錯誤,因為您的json字符串無效。 看來,這應該是一個數組,但是缺少方括號。

$json = '[{"color":"Red","size":"YXS","quantity":"10"}],[{"color":"Blue","size":"YXS","quantity":"10"}]';
$validJson = "[$json]";
$data = json_decode($validJson, true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM