我正在尝试生成一个包含所有过滤器的JSON字符串,但我经常使用重复的键。因此,我希望找到一个将重复的键转换为JSON数组的解决方案。
例如,我有一个JSON对象:
{
"filter-1": "value-1",
"filter-1": "value-2",
"filter-2": "value-3",
"filter-3": "value-4"
}我想把它变成这样:
{
"filter-1": ["value-1", "value-2"],
"filter-2": "value-3",
"filter-3": "value-4"
}有人能给我指明正确的方向吗?我希望使用JavaScript的解决方案,但是任何方法都会非常受欢迎!提前感谢!
发布于 2017-02-27 00:47:28
重复的密钥对会导致覆盖问题。
Javascript对象不允许重复键。
var testObj = JSON.parse('{"filter-1":"value-1","filter-1":"value-2","filter-2":"value-3","filter-3":"value-4"}');将在解析第二个密钥对(filter1: value-2)时覆盖第一个密钥对(filter-1: value-1),因为这两个密钥对具有相同的密钥。
但是,JSON规范(而不是Javscript对象)没有具体提到是否允许重复密钥。您可能希望编写自己的解析函数来处理重复的键。
发布于 2017-02-27 01:56:32
您必须更改JSON的格式,因为JS对象中的键必须是唯一的。然后,您可以硬编码或使用库(如jquery或underscorejs )将它们分组。
https://jsfiddle.net/p5fkjcwt/1/
var objects =
{
0: {"filter": "filter-1", "value":"value-1"},
1: {"filter": "filter-1", "value":"value-2"},
2: {"filter": "filter-2", "value":"value-3"},
3: {"filter": "filter-3", "value":"value-4"}
}
var result = _.groupBy(objects,"filter")
console.log(result)https://stackoverflow.com/questions/42475999
复制相似问题