我想存储一个键值项的数组,一种常见的方法是:
// the JSON data may store several data types, not just key value lists,
// but, must be able to identify some data as a key value list
// --> more "common" way to store a key value array
{
[
{"key": "slide0001.html", "value": "Looking Ahead"},
{"key": "slide0008.html", "value": "Forecast"},
{"key": "slide0021.html", "value": "Summary"},
// another THOUSANDS KEY VALUE PAIRS
// ...
],
"otherdata" : { "one": "1", "two": "2", "three": "3" }
}
但是,当有许多对/项时,字符串长度变得不可用,并且我想要一种紧凑的方式,这可以是一个示例:
// --> (1) a "compact" way to store a key value array
{
[
{"slide0001.html", "Looking Ahead"},
{"slide0008.html", "Forecast"},
{"slide0021.html", "Summary"},
// another THOUSANDS KEY VALUE PAIRS
// ...
],
"otherdata" : { "one": "1", "two": "2", "three": "3" }
}
此外,我还希望能够将数据标识为keyvalue数组,因为我可能希望在同一个JSON文件中存储其他数据。
// --> (2) a "compact" way to store a key value array
{
"keyvaluelist":
[
{"slide0001.html", "Looking Ahead"},
{"slide0008.html", "Forecast"},
{"slide0021.html", "Summary"},
// another THOUSANDS KEY VALUE PAIRS
// ...
],
"otherdata" : { "one": "1", "two": "2", "three": "3" }
}
// --> (3) a "compact" way to store a key value array
{
"mylist":
{
"type": "keyvaluearray",
"data":
[
{"slide0001.html", "Looking Ahead"},
{"slide0008.html", "Forecast"},
{"slide0021.html", "Summary"},
// another THOUSANDS KEY VALUE PAIRS
// ...
]
},
"otherdata" : { "one": "1", "two": "2", "three": "3" }
}
你觉得怎么样,你建议哪一种,你有别的办法吗?谢谢。
更新1:删除无效代码。Javascript =〉JSON
UPDATE 2:添加非键值数据
更新3:将每个键值对中的“{”和“}”替换为“[”和“]”
5条答案
按热度按时间u3r8eeie1#
那么,为什么不简单地使用键值文本呢?
r8xiu3jd2#
如果解析这个的逻辑 * 知道 *
{"key": "slide0001.html", "value": "Looking Ahead"}
是一个键/值对,那么您可以将它转换成一个数组,并保存几个常量来指定哪个索引Map到哪个键。例如:
现在,您的数据可以是:
如果您的解析逻辑事先不知道数据的结构,您可以添加一些元数据来描述它。例如:
...然后由解析器处理。
b5lpy0ml3#
对我来说,这是在JSON中构造此类数据的最“自然”的方式,前提是所有键都是字符串。
我把这读作
当然,第一元素或第二元素可替换地被描述为对象本身,每个对象具有三个元素。
zfycwa2u4#
对于在json中使用键/值对,请使用对象而不要使用数组
在数组中查找名称/值很难,但在对象中很容易
例如:
klsxnrf15#
2023年解决方案:使用对象.fromEntries()
返回