【问题标题】:Root name and child name for json format using json_encode in php [duplicate]在php中使用json_encode的json格式的根名称和子名称[重复]
【发布时间】:2021-01-29 19:15:54
【问题描述】:

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

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

这就是我的 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",
        "description": "Lorem ipsum dolor sit amet",
        "title": "Advise",
      },
      {
        "Severe": "false",
        "description": "Lorem ipsum dolor sit amet",
        "title": "Advise",
      },
      {
        "Severe": "true",
        "description": "Lorem ipsum dolor sit amet",
        "title": "Advises ",
      }
    ]
  }
}

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

你能帮帮我吗? 问候

【问题讨论】:

  • json_encode 只是反映您的数据已有的结构。由于您没有向我们展示这些数据,或者您是如何生成数据的,所以除了向您重复您的问题之外,真的没什么可说的了:您需要将数据的结构从它的样子更改为你希望它看起来像。
  • 感谢您的回答,我更新了我的提示,并添加了我的 var 是怎样的

标签: php arrays json encode jsonencoder


【解决方案1】:

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

下面的 sn-p 将修改每个子数组以包含 '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,
                "description": "Lorem ipsum dolor sit amet.",
                "title": "Advise"
            }
        },
        {
            "Advisory": {
                "Severe": true,
                "description": "Lorem ipsum dolor sit amet",
                "title": "Advise"
            }
        }
    ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2017-04-06
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多