首页 > 解决方案 > 具有单个元素的 JSON 数组

问题描述

我正在开发一个具有 JSON 格式输出的项目。我需要清楚 JSON 数组结构。所以有些字段像数组一样是多个条目。如果一个元素是一个数组但只有一个值,它是否仍然在结构中包含一个数组节点'['?

例子:

这是一个示例 JSON 元素,它是一个数组并具有多个值。

"Talents": [
      {
        "Items": "test"
      },
      {
        "Items": "test"
      }
    ]

如果这个元素没有多个值,它会如下所示吗?

   "Talents": 
      {
        "Items": "test"
      }

对于具有单个值的数组类型元素,不会出现“[”。有人可以澄清一下吗?

标签: javascriptarraysjson

解决方案


单项数组仍将包含 JSON 格式的数组括号,因为它们仍然是数组。换句话说,没有这种将单项数组转换为非数组表示的本机机制。因此,对于您的单项示例,它将表示如下:

"Talents": [
  {
    "Items": "test"
  }
]

您可以使用一些简单的代码轻松地对此进行测试:

let jsonSingleItem = { "Talents": [ {"Items": "item1"} ] };
let arraySingleItem = [ {"Items": "item1"} ];

console.log(JSON.stringify(jsonSingleItem));
console.log(jsonSingleItem);
console.log(arraySingleItem);

产生以下输出:

{"Talents":[{"Items":"item1"}]}
{ Talents: [ { Items: 'item1' } ] }
[ { Items: 'item1' } ]

因此,在所有情况下(字符串化 JSON 对象、原生 JSON 和 javascript 数组),单个项目仍位于数组中。

注意:API 的使用者会以超出 API 定义的约定合同/模式的方式发送数据(即 JSON)并不少见,并且这(发送对象而不是单个对象数组时)只是一项)是我以前见过的一个例子。API 的所有者/开发者是否可以灵活地处理偏离 API 模式的输入,这将取决于 API 的所有者/开发者。


推荐阅读