为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 json 中正确格式化 WP_REST_Response 并获取数组而不是对象?

如何在 json 中正确格式化 WP_REST_Response 并获取数组而不是对象?

蛊毒传说 2021-06-06 13:15:53
我正在用 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个赞

我自己的回答是:

  1. 这不是 WP_REST_Response 问题。

  2. 这不是 json_decode 问题

  3. 问题是数据格式和javascript读取数组的方式

简而言之:不可能将 php 非连续索引数组转换为 javascript 数组,因为 javascript 需要连续的整数键。在所有其他情况下,javascript 读取为关联数组或对象(本质上是相同的)。因此,php非连续索引数组的json转换总会输出对象。


查看完整回答
反对 回复 2021-06-11
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信