javascript - 具有单个元素的 JSON 数组
问题描述
我正在开发一个具有 JSON 格式输出的项目。我需要清楚 JSON 数组结构。所以有些字段像数组一样是多个条目。如果一个元素是一个数组但只有一个值,它是否仍然在结构中包含一个数组节点'['?
例子:
这是一个示例 JSON 元素,它是一个数组并具有多个值。
"Talents": [
{
"Items": "test"
},
{
"Items": "test"
}
]
如果这个元素没有多个值,它会如下所示吗?
"Talents":
{
"Items": "test"
}
对于具有单个值的数组类型元素,不会出现“[”。有人可以澄清一下吗?
解决方案
单项数组仍将包含 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 的所有者/开发者。
推荐阅读
- amazon-s3 - AWS 文件共享授权
- flutter - Flutter - 在appBar上居中TextField不起作用
- cordova - 用于 iOS 的 Cordova inappbrowser 为每 302 次重定向发送重复请求
- jolt - 忽略输出 JSON 中的隐式数组创建
- xml - 在导入 XSD 中使用复杂类型,而不更改现有 XML
- reactjs - 无法导入@testing-library/jest-dom,expect.extend 不是函数
- teradata - 具有多层的 Teradata PIVOT
- python - FastApi 使用 Python 将请求从 Kubernetes 内部的一个 api 发布到另一个
- flutter - 我找不到命令 Flutter: Launch Emulator on VSCode
- kotlin - Kotlin 中的私有函数和 null 安全运算符测试