2011-10-18 52 views
3

我剛剛開始使用一些Jackson JSON數據。這部分給了我麻煩。JSON對象屬性名稱可以是整數嗎?

"pointData":{ 
    "1":"32.1093904, 66.7065216", 
    "2":"33.1236854, 67.8128443", 
    "3":"32.9524550, 67.0013501" 
} 

在我看來,具有整數作爲屬性名稱是非法的。它是否正確?

+1

Jonathan M提供了一個很好的答案,但我想知道 - 如果您有這些數字屬性,爲什麼不使用數組?點[1],點[2]等,其中每個數組元素是一個對象'{「x」:32.1093904,「y」:66.7065216}' –

+0

正如指出的那樣,使用字符串這些都是數字。但除了無效的JSON(對象周圍沒有捲曲)之外,你還有其他問題嗎? – StaxMan

+0

我的完整JSON數據實際上格式正確,這只是一個片段,我忘記了大括號。我遇到的主要問題是追溯到代碼的不同部分,現在我正在制定這部分代碼。但是,給出的答案已經有一些重要的信息幫助我了。謝謝。 – NeilMonday

回答

6

你是正確的,JSON不能有整數屬性名稱,因爲所有的JSON屬性名稱都必須如上所述引用,這使得它們成爲字符串。看到這裏的流量:http://json.org/

而且,你的JSON結構上面是無效,因爲它與屬性名稱開頭,但沒有對象的屬性的一部分。如果你得到錯誤,這就是爲什麼。一個法律結構將是:

{"pointData":{ 
    "1":"32.1093904, 66.7065216", 
    "2":"33.1236854, 67.8128443", 
    "3":"32.9524550, 67.0013501" 
    } 
} 

僅供參考,如果你存儲點數據中,也許更好的結構將是:

  1. {"pointData":{ 
        "1": {"x": 32.1093904, "y": 66.7065216}, 
        "2": {"x": 33.1236854, "y": 67.8128443}, 
        "3": {"x": 32.9524550, "y": 67.0013501} 
        } 
    } 
    

    通知有關此結構的兩件事每個點具有可獨立訪問的xy屬性。

  2. xy屬性的值是數字,而不是字符串。
2

那些不是整數,那些是字符串。它們碰巧是包含字符的字符串,也用於表示其他上下文中的整數,但它們仍然是字符串,所以這是有效的JSON。從JSON spec

字符串是零個或多個Unicode字符的序列,用雙引號括起來,使用反斜槓轉義符。

像這樣的事情不會是有效的JSON:

{ 1:"32.1093904, 66.7065216", 
    2:"33.1236854, 67.8128443", 
} 

...因爲這裏的字符不是雙引號括起來,並在JSON所以沒有有效的密鑰。

相關問題