JSON解析多个key

2024-03-20

我有以下 JSON 字符串。

var jsonString = '{"J":4,"0":"M", "J":5,"0":"N"}'

如果我使用 jquery.parseJSON(jsonString) 解析它,我得到

{"J":5,"0":"N"}

问题

1)jsonString是否格式错误?

2)是否有另一种jquery方法可以用来包含具有重复键的对象,即

jquery.someAwesomeMethod(jsonString) => {"J":4,"0":"M", "J":5,"0":"N"}

直接回答您的问题:

1) Is jsonString malformed?

它实际上可能是合法的 JSON(我不完全确定),但在任何类型的 javascript 上下文中使用或使用任何 javascript JSON 解析器解析时,它都不实用,例如jquery.parseJSON因为重复的键。

2) Is there another jquery method I can use to include objects 
   with duplicate keys, i.e.

jquery.someAwesomeMethod(jsonString) => {"J":4,"0":"M", "J":5,"0":"N"}

No,不存在这样的 jQuery 方法,因为 jQuery 没有该方法,并且因为您想要的输出在 javascript 中是不可能的。您已经表示了 Javascript 对象语法,但 Javascript 对象不支持重复键。在 Javascript 中,为给定键设置的最后一个值获胜。

因此,如果您打算将 JSON 解析为普通的 javascript 对象(JSON 通常如何在浏览器应用程序中使用以及如何解析它)jquery.parseJSON()),您将不会获得具有该类型数据声明的重复键,因为同一键的后续声明可能只会替换早期的声明 - 只有一个会保留下来。

您可能需要某种不同类型的数据结构,例如数组或具有数组值作为键的对象:

这是一个仅在键和值之间成对交替的数组:

[
    "J", 4, 
    "0","M", 
    "J", 5, 
    "0","N"
]

obj[0] // key
obj[1] // corresponding value

访问数组时,偶数索引将是键,奇数索引将是值。

或者这是一个对象,其中值是数组,因此每个键可以有多个值:

{"J":[4, 5], "0":["M", "N"]}

typeof obj["J"]  // Array
obj["J"].length  // array of length == 2
obj["J"][0]      // first value in array == 4
obj["J"][1]      // second value in array == 5

每个键都包含一个值数组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON解析多个key 的相关文章

随机推荐