2014-01-28 81 views
0

後對象的訪問HashMap的我在Java代碼中取得了如何轉換成JSON

HashMap<PriceBreak, ArrayList<PricingElement>> 

,並推送到客戶端通過GSON。 現在在JavaScript中,如果我輸出的對象,它看起來像這樣的控制檯:

Object { 
     PriceBreak [amount=50-99, discountedPrice=n/a] orderNo:0 forDeletion: false forChanging: false forAdding: false: Array[5], 
     PriceBreak [amount=250+, discountedPrice=n/a] orderNo:0 forDeletion: false forChanging: false forAdding: false: Array[5], 
     PriceBreak [amount=1-9, discountedPrice=n/a] orderNo:0 forDeletion: false forChanging: false forAdding: false: Array[5], 
     PriceBreak [amount=100-249, discountedPrice=n/a] orderNo:0 forDeletion: false forChanging: false forAdding: false: Array[5], … 
} 

而且我不知道如何訪問密鑰(PriceBreak)成員或值(ArrayList的)。看起來每個關鍵字都是相同的(PriceBreak),我不知道如何訪問特定的關鍵字。 有什麼建議嗎?

+0

看起來不正確生成您的數據。它看起來像整個'PriceBreak [amount = 50-99,discountedPrice = n/a] orderNo:0 fordeletion:false forChanging:false forAdding:false'部分實際上是**屬性名稱**並且數組是值那部分是好的)。請注意,您只能使用**字符串**和**數字**作爲JavaScript中的屬性名稱,因此您必須修復Java代碼以將每個「PriceBreak」實例序列化爲更有意義的內容。 –

+1

或者這真的是你想要的嗎?您可以使用'obj [「PriceBreak [amount = 50-99,discountedPrice = n/a] orderNo:0 forDeletion:false forChanging:false forAdding:false」]'訪問其中一個屬性,然後或[遍歷屬性]( http://stackoverflow.com/q/85992/218196)。也看看[訪問/進程(嵌套)對象,數組或JSON](http://stackoverflow.com/questions/11922383/access-process-nested-objects-arys-or-json) –

+0

@Felix Kling是啊,我想我在這裏的邏輯失敗了。 Gson做了我所要求的 - 做出了關鍵/值對。雖然這不是特別有用的,當我必須使用像這樣的長參數訪問值時。 我認爲一個包含PriceBreak和ArrayList 的新類的數組會更適合我。 編輯:但我會檢查迭代財產第一 – kacpr

回答

0

的Java

HashMap<PriceBreak, ArrayList<PricingElement>> m; 
... 
Set<PriceBreak> s=m.keySet(); 
Collection<ArrayList<PricingElement>> c=m.values(); 

的javascript:

// get keys 
var keys = []; 
for(var k in m) keys.push(k.key); 

//get a value: 
v=m[someKey]; 
+0

是不是Java代碼?我正在問如何在JavaScript被對象進行字符串化和發送之後訪問Object。對不起,如果這不明確在我的問題。 – kacpr

+0

你已經把「java」標籤放在這裏......? – Gangnus

+0

嗯,這是一個Java的HashMap被轉換,所以我認爲這將是相關的。 – kacpr