我正在用 wordpress 构建一个非常小的应用程序,需要通过 ajax 获取 json 数据。我正面临一个奇怪的(至少对我而言)问题。我的原始数据日志是这样的(请注意items和children>它们是数组):object(stdClass)#6740 (2) { ["type"]=> string(5) "areas" ["items"]=> array(1) { [92]=> object(stdClass)#6742 (10) { ["term_id"]=> int(92) ["name"]=> string(6) "Italia" ["slug"]=> string(6) "italia" ["term_taxonomy_id"]=> int(92) ["taxonomy"]=> string(12) "dealer_areas" ["description"]=> string(0) "" ["parent"]=> int(82) ["count"]=> int(1) ["term_order"]=> float(0.1) ["children"]=> array(1) { [126]=> object(stdClass)#6741 (10) { ["term_id"]=> int(126) ["name"]=> string(8) "Sardegna" ["slug"]=> string(8) "sardegna" ["term_taxonomy_id"]=> int(126) ["taxonomy"]=> string(12) "dealer_areas" ["description"]=> string(0) "" ["parent"]=> int(92) ["count"]=> int(1) ["term_order"]=> float(0.10003) ["children"]=> array(0) { } } } } }}如果我将它直接传递给 WP_REST_Response,然后作为 json 响应 ( return new WP_REST_Response($response_obj))传递给 js ,我会得到这样的日志:正如你所看到的,它不完全是 json ......有 getter/setter 方法..好的,然后我传递值 json 编码 ( return new WP_REST_Response(json_encode($response_obj))) 并通过 javascript 解析JSON.parse()。我明白了:或者这个(另一个例子超过 1 个 obj)如您所见,我得到了 json,但即使原始项目数据是一个数组,现在我也得到了一个对象。如何保留原始数组类型?
1 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
我自己的回答是:
这不是 WP_REST_Response 问题。
这不是 json_decode 问题
问题是数据格式和javascript读取数组的方式
简而言之:不可能将 php 非连续索引数组转换为 javascript 数组,因为 javascript 需要连续的整数键。在所有其他情况下,javascript 读取为关联数组或对象(本质上是相同的)。因此,php非连续索引数组的json转换总会输出对象。
添加回答
举报
0/150
提交
取消