[英]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.