Php 尝试解析JSON数组时获取未定义的属性:stdClass::$insertion
我在这个json上尝试提取插入顺序数组Php 尝试解析JSON数组时获取未定义的属性:stdClass::$insertion,php,json,parsing,Php,Json,Parsing,我在这个json上尝试提取插入顺序数组 { "response" : { "status" : "OK", "count" : 1, "insertion-orders" : [{ "id" : 5, "name" : "First Choice", "code" : null, "state" : "active
{
"response" : {
"status" : "OK",
"count" : 1,
"insertion-orders" : [{
"id" : 5,
"name" : "First Choice",
"code" : null,
"state" : "active",
"line_items" : [{
"id" :352,
"timezone" : "Europe/London"
}, {
"id" :358,
"timezone" : "Europe/London"
}
],
"labels" : null,
"safety_pacing" : true
}
]
}
}
我所做的是json是json字符串:
$Json = json_decode($TheJson);
$JsonResponse = $Json->response;
$OrdersArray = $JsonResponse->insertion-orders;
我得到的错误是:
Notice: Undefined property: stdClass::$insertion in /home/foo/a/foo.com/user/htdocs/FunctionManager.php on line 16
Notice: Use of undefined constant orders - assumed 'orders' in /home/foo/a/foo.com/user/htdocs/FunctionManager.php on line 16
第16行是:
$OrdersArray = $JsonResponse->insertion-orders;
我只是不明白,它是有效的json
$JsonResponse->insertion-orders;
被解析为
$JSonResponse->insert MINUS orders
不能在使用箭头符号的对象属性名称中使用-
。那一定是
$JsonResponse->{'insertion-orders'}
相反
至于您关于它是有效JSON的评论,它在Javascript中也不起作用:
json.insertion-orders
也将被视为
json.insertion减去orders
,但其无效PHPUse$JsonResponse->{'insertion-orders'}
是否允许在PHP中对对象使用数组表示法?我认为可以执行$JsonResponse->{“insertion orders”}
但更好的办法可能是将true作为第二个参数传递给json_解码,并将其作为数组处理。对。就我而言,这是一个愚蠢的想法,把JS/php搞混了。编辑了答案。但是在js中,对于解释原始代码失败的原因,即使您发布正确解决方案的速度很慢,到今天json[“插入顺序”]+1仍然有效。