【问题标题】:JSON array with single element具有单个元素的 JSON 数组
【发布时间】:2018-06-26 02:02:12
【问题描述】:

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

例子:

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

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

如果这个元素没有多个值,会出现如下吗?

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

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

【问题讨论】:

  • 这里简单介绍一下JSON。 w3schools.com/js/js_json_intro.asp
  • 通常情况下,是的。它仍然是一个包含一个项目的数组。但这取决于您从何处获取此 JSON 内容,通常应在您使用的任何文件的文档中说明

标签: javascript arrays json


【解决方案1】:

单项数组仍将包含 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 模式的输入,这取决于他们。

【讨论】:

    【解决方案2】:

    方括号(“[]”)表示 JSONArray,在您的情况下可以像这样访问

    Talents[0]
    

    将返回

          {
            "Items": "test"
          }
    

    在第二种情况下,曲线括号表示一个 JSON 对象。如果你想访问项目的价值。比你可以通过

    Talents.Items
    

    Talents["Items"]
    

    将返回

    "Test"
    

    完整参考, JSON Syntax

    【讨论】:

    • 这个答案没有回答这个问题:只有单个项目的元素应该存储在数组中还是作为对象本身。
    • 我也有同样的问题
    • @Rick 这真的是您问题的答案吗?
    猜你喜欢
    • 2018-07-02
    • 2013-06-04
    • 1970-01-01
    • 2019-12-06
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多