在php中使用json_encode的json格式的根名称和子名称

问题描述

我在使用 json_encode 时遇到了一些问题, 我需要输出是这样的:

{
  "Advisories": [
    {
      "Advisory": {
        "Severe": "false","description": "Lorem ipsum dolor sit amet","title": "Advise:",}
    },{
      "Advisory": {
        "Severe": "true",}
    }
  ]
}

这就是我的 var $arrayItems 的样子:

Array (
    [0] => Array (
        [Severe] => false
        [description] => Lorem ipsum dolor sit amet.
    [title] => Advise
    )
    [1] => Array (
        [Severe] => false
        [description] => Lorem ipsum dolor sit amet.
    [title] => Advise
    )
    [2] => Array (
        [Severe] => true
        [description] => Lorem ipsum dolor sit amet
    [title] => Advise
    )
)

但是当我像这样使用 json_encode 函数时:print json_encode(['Advisories' => array('Advisory'=>$arrayItems)]); 输出是这样的:

{
  "Advisories": {
    "Advisory": [
      {
        "Severe": "false","title": "Advise",},{
        "Severe": "false",{
        "Severe": "true","title": "Advises ",}
    ]
  }
}

我不知道我还能做些什么来改变输出,

你能帮我吗? 问候

解决方法

要实现该格式,您必须稍微修改 $arrayItems。

以下代码段将修改每个子数组以包含“Advisory”键,该键将是指向 json 对象(保存原始子数组数据)的属性。

$result = ['Advisories' => array_map(
    function ($subarray) {
        return ['Advisory' => $subarray];
    },$arrayItems
)];

return json_encode($result);

结果:

{
    "Advisories": [
        {
            "Advisory": {
                "Severe": false,"description": "Lorem ipsum dolor sit amet.","title": "Advise"
            }
        },{
            "Advisory": {
                "Severe": false,{
            "Advisory": {
                "Severe": true,"description": "Lorem ipsum dolor sit amet","title": "Advise"
            }
        }
    ]
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...