You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何使用json_encode将对象转换为外层为数组的JSON格式

解决方法

首先明确你之前使用的JSON_OBJECT_AS_ARRAY参数的作用:它仅会将编码过程中遇到的内层对象转换为关联数组格式,不会主动为最外层新增数组包装。你当前输出外层为{}的核心原因是,你传入json_encode的第一个参数$myObject本身是对象/关联数组类型,json_encode对非索引数组的结构默认输出为JSON对象格式。

要实现外层为[]的JSON格式,只需要将你要编码的内容外层套一层索引数组即可,修改代码如下:

// 将原对象作为索引数组的第一个元素传入,保留JSON_OBJECT_AS_ARRAY参数保证内层结构符合预期
echo json_encode([$myObject], JSON_OBJECT_AS_ARRAY);

修改后输出的结构示例:

[
  {
    "SALDOC": [
      {
        "SERIES": null,
        "TRDR": null,
        "PAYMENT": "2",
        "SHIPMENT": "",
        "TRNDATE": "2019-03-11 07:57:38",
        "REMARKS": null,
        "DISC1VAL": "0.0000",
        "SALESMAN": null,
        "SHIPKIND": null,
        "CCCCLCOURIERWEIGHT": "1.0000"
      }
    ],
    "ITELINES": [
      {
        "LINENUM": null,
        "VAT": null,
        "MTRUNIT4": null,
        "MTRCATEGORY": null,
        "MTRL": null,
        "QTY1": "1.0000",
        "PRICE": "15.0000"
      }
    ],
    "MTRDOC": [
      {
        "SHPZIP": "test",
        "SHPCITY": "teset",
        "SHIPPINGADDR": "test",
        "SHPDISTRICT": 100
      }
    ],
    "SRVLINES": [],
    "EXPANAL": []
  }
]

如果你的需求是将外层的字符串键也转为索引数组(丢弃原键名),可以先将对象转为数组后调用array_values处理:

echo json_encode(array_values((array)$myObject), JSON_OBJECT_AS_ARRAY);

这种方式输出的外层数组不会保留SALDOC、ITELINES这类键名,按实际需求选择即可。

内容的提问来源于stack exchange,提问作者gabtzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 15:06:03