首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将带有重复键的JSON字符串转换为JSON字符串数组

将带有重复键的JSON字符串转换为JSON字符串数组
EN

Stack Overflow用户
提问于 2017-02-27 00:27:19
回答 2查看 1.7K关注 0票数 1

我正在尝试生成一个包含所有过滤器的JSON字符串,但我经常使用重复的键。因此,我希望找到一个将重复的键转换为JSON数组的解决方案。

例如,我有一个JSON对象:

代码语言:javascript
复制
{
  "filter-1": "value-1",
  "filter-1": "value-2",
  "filter-2": "value-3",
  "filter-3": "value-4"
}

我想把它变成这样:

代码语言:javascript
复制
{
  "filter-1": ["value-1", "value-2"],
  "filter-2": "value-3",
  "filter-3": "value-4"
}

有人能给我指明正确的方向吗?我希望使用JavaScript的解决方案,但是任何方法都会非常受欢迎!提前感谢!

EN

回答 2

Stack Overflow用户

发布于 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对象)没有具体提到是否允许重复密钥。您可能希望编写自己的解析函数来处理重复的键。

票数 0
EN

Stack Overflow用户

发布于 2017-02-27 01:56:32

您必须更改JSON的格式,因为JS对象中的键必须是唯一的。然后,您可以硬编码或使用库(如jquery或underscorejs )将它们分组。

https://jsfiddle.net/p5fkjcwt/1/

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42475999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档