【问题标题】:json_encode must cast object as arrayjson_encode 必须将对象转换为数组
【发布时间】:2016-09-16 08:37:25
【问题描述】:

目前我需要构建一个 API 以输出为 json 格式,我目前所做的(例如)如下:

$array=array();
$array['firstname']="John";
$array['lastname']="Doe";
$array['cities']=array();
$array['cities']['name']=array("London","Brighton");
$array['cities']['population']=array("12000000","500000");
echo json_encode($array);

输出是:

{"firstname":"John","lastname":"Doe","cities":{"name":["London","Brighton"],"population":["12000000","500000 "]}}

但是我被告知这是不正确的,输出需要是

{"firstname":"John","lastname":"Doe","cities":[{"name":["London","Brighton"],"population" :["12000000","500000"]}]}

(注意输出中的方括号)。原因是由于 $array['cities'] 是一个数组,因此需要将城市本身指定为数组。

我的问题是:

1)在这些情况下是否习惯添加方括号来表示它是一个数组?

2) 如何更改我的 php 代码以便在输出中包含这些方括号?

感谢帮助

谢谢 帕特里克

【问题讨论】:

  • 确定这就是输出需要的吗?我希望伦敦和布莱顿(以及它们各自的人口)位于 cities 数组中的不同对象中。
  • 您好,我也很惊讶,但有人问我是否可以将其更改为“正确”格式,方法是将其放在方括号中。我的理解是键值数组在javascript中总是对象,但是由于city[]本身就是一个数组,所以需要这样转换。
  • 我想他们会告诉你这是错的,但是3v4l.org/KeZOh
  • 这可以解决问题......:)

标签: php json


【解决方案1】:

来了

$array=array();
$array['firstname']="John";
$array['lastname']="Doe";
$array['cities']=array();
$array['cities'][]=array(
                        'name'=>array("London","Brighton"),
                        'population'=>array("12000000","500000")
                   );
echo json_encode($array);

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 2021-05-03
    • 2018-12-04
    • 2021-06-16
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多