我剛剛開始使用一些Jackson JSON數據。這部分給了我麻煩。JSON對象屬性名稱可以是整數嗎?
"pointData":{
"1":"32.1093904, 66.7065216",
"2":"33.1236854, 67.8128443",
"3":"32.9524550, 67.0013501"
}
在我看來,具有整數作爲屬性名稱是非法的。它是否正確?
我剛剛開始使用一些Jackson JSON數據。這部分給了我麻煩。JSON對象屬性名稱可以是整數嗎?
"pointData":{
"1":"32.1093904, 66.7065216",
"2":"33.1236854, 67.8128443",
"3":"32.9524550, 67.0013501"
}
在我看來,具有整數作爲屬性名稱是非法的。它是否正確?
你是正確的,JSON不能有整數屬性名稱,因爲所有的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
屬性的值是數字,而不是字符串。那些不是整數,那些是字符串。它們碰巧是包含字符的字符串,也用於表示其他上下文中的整數,但它們仍然是字符串,所以這是有效的JSON。從JSON spec:
字符串是零個或多個Unicode字符的序列,用雙引號括起來,使用反斜槓轉義符。
像這樣的事情不會是有效的JSON:
{ 1:"32.1093904, 66.7065216",
2:"33.1236854, 67.8128443",
}
...因爲這裏的字符不是雙引號括起來,並在JSON所以沒有有效的密鑰。
Jonathan M提供了一個很好的答案,但我想知道 - 如果您有這些數字屬性,爲什麼不使用數組?點[1],點[2]等,其中每個數組元素是一個對象'{「x」:32.1093904,「y」:66.7065216}' –
正如指出的那樣,使用字符串這些都是數字。但除了無效的JSON(對象周圍沒有捲曲)之外,你還有其他問題嗎? – StaxMan
我的完整JSON數據實際上格式正確,這只是一個片段,我忘記了大括號。我遇到的主要問題是追溯到代碼的不同部分,現在我正在制定這部分代碼。但是,給出的答案已經有一些重要的信息幫助我了。謝謝。 – NeilMonday