直接回答您的问题:
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
每个键都包含一个值数组。