回答你的问题:
直接回答你的问题:
1) Is jsonString malformed?
这可能是合法的JSON(我不完全确定),但由于存在重复键,在任何JavaScript上下文中使用或使用像jquery.parseJSON
这样的JavaScript JSON解析器进行解析时都不实用。
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"}
很抱歉,没有这样的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
每个键都将保存一个值数组。
obj.J
,你期望它会评估为什么? - ChaosPandionjsonString
是一个 JavaScript 对象,而不是 JSON 字符串。没有理由调用jquery.parseJSON(jsonString)
。正如其他人已经说过的那样,在 JS 中,对象属性名是唯一的。 - Felix Kling