我的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
答案 0 :(得分:2)
这不是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的问题。
答案 1 :(得分:0)
删除逗号旁边的方括号,它会起作用!实际上,在外部数组之间有两个数组,前面必须有一个方括号,在json字符串末尾有一个右方括号,以使其工作。
答案 2 :(得分:0)
您收到此错误,因为您的json字符串无效。看起来,这应该是一个数组,但缺少括号。
$json = '[{"color":"Red","size":"YXS","quantity":"10"}],[{"color":"Blue","size":"YXS","quantity":"10"}]';
$validJson = "[$json]";
$data = json_decode($validJson, true);