我刚刚开始使用一些Jackson JSON数据。这部分给了我麻烦。
"pointData":{
"1":"32.1093904, 66.7065216",
"2":"33.1236854, 67.8128443",
"3":"32.9524550, 67.0013501"
}
在我看来,将整数作为属性名称是非法的。这是对的吗?
答案 0 :(得分:6)
JORD不能具有整数属性名称是正确的,因为必须引用所有JSON属性名称,因为它们是上面的,使它们成为字符串。请参阅此处的流程:http://json.org/
此外,上面的JSON结构是无效,因为它以属性名称开头,但没有该属性属于的对象。如果您遇到错误,这就是原因。法律结构将是:
{"pointData":{
"1":"32.1093904, 66.7065216",
"2":"33.1236854, 67.8128443",
"3":"32.9524550, 67.0013501"
}
}
仅供参考,如果您要存储点数据,可能会有更好的结构:
{"pointData":{
"1": {"x": 32.1093904, "y": 66.7065216},
"2": {"x": 33.1236854, "y": 67.8128443},
"3": {"x": 32.9524550, "y": 67.0013501}
}
}
请注意有关此结构的两件事:
x
和y
属性,可以独立访问。x
和y
属性的值是数字,而不是字符串。答案 1 :(得分:2)
那些不是整数,那些是字符串。它们碰巧是包含字符的字符串,也用于表示其他上下文中的整数,但它们仍然是字符串,所以这是有效的JSON。来自JSON spec:
字符串是零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义。
像这样的东西不是有效的JSON:
{ 1:"32.1093904, 66.7065216",
2:"33.1236854, 67.8128443",
}
...因为这里的字符没有用双引号括起来,所以JSON中没有有效的键。