我感兴趣的是在包含多个JSON对象的JSON数组中存储键值对元数据。这将指示通用解析器在处理JSON数组时如何处理JSON数组中的JSON对象列表。下面是一个示例JSON,我希望在那里有一些元数据字段。
{
"Data": [
<< "metadata":"instructions" here >>
{
"foo": 1,
"bar": "barString"
},
{
"foo": 3,
"bar": "fooString"
}
]
}
构造这个混合数据JSON数组的正确方法是什么?
答案 0 :(得分:1)
我会添加一个meta
密钥作为数据的对等方,如下所示。这会将您的数据与元数据分开。
{
"Meta": {
"metadata":"instructions"
},
"Data": [
{
"foo": 1,
"bar": "barString"
},
{
"foo": 3,
"bar": "fooString"
}
]
}
答案 1 :(得分:0)
如果您可以修改数据的结构,为什么不在您的指示(即meta
)和另一个属性Data.meta
中添加属性content
(因为想要更好的词。 ..)(即Data.content
),其中后者是原始的对象数组。
这样,它仍然是有效的JSON,其他实现也可以读取元字段而不用太多。
编辑:刚才意识到,你还必须使Data
成为对象而不是数组。然后你的JSON模式应该成为这个:
{
"Data": {
"metadata": "instructions here",
"content": [
{
"foo": 1,
"bar": "barString"
},
{
"foo": 3,
"bar": "fooString"
}
]
}
}
这可能是最稳定,可维护和便携的解决方案。 对于参考,something similar之前已经被问过。
答案 2 :(得分:0)
在与另一位开发人员进行一些额外讨论之后,我们想到了一种在data
JSON数组中包含元数据指令的方法。
{
"Data": [
{
"metadata": "Instructions"
}
{
"foo": 1,
"bar": "barString"
},
{
"foo": 3,
"bar": "fooString"
}
]
}
这种方法确实带来了data
JSON数组必须的索引0包含一个包含metadata
的JSON对象以及通用解析器的相关指令的限制。如果未将此元数据对象包含为索引0,则会触发通用解析器需要处理的错误情况。所以它确实有它的权衡。
答案 3 :(得分:-1)
我会去尝试帮助你..
&#34;元数据&#34; :[ { &#34; foo&#34;:1, &#34; bar&#34;:&#34; barString&#34; }, { &#34; foo&#34;:3, &#34; bar&#34;:&#34; fooString&#34; } ]