我正在处理一个具有JSON格式输出的项目。我需要弄清JSON数组结构。因此,有些字段具有多个输入项,例如数组。如果一个元素是一个数组但只有一个值,它在结构中是否仍包含一个数组节点“ [”?
示例:
这是一个示例JSON元素,它是一个数组,具有多个值。
"Talents": [
{
"Items": "test"
},
{
"Items": "test"
}
]
如果此元素没有多个值,它将显示如下吗?
"Talents":
{
"Items": "test"
}
对于具有单个值的数组类型元素,不会出现“ [”。有人可以澄清一下吗?
答案 0 :(得分:1)
方括号(“ []”)表示可以访问的JSONArray
Talents[0]
将返回
{
"Items": "test"
}
在第二种情况下,括号括起来表示一个JSON对象。如果要访问项目的价值。比你可以的
Talents.Items
OR
Talents["Items"]
将返回
"Test"
作为完整参考, JSON Syntax
答案 1 :(得分: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 架构的输入,这取决于 API 的所有者/开发者。