2014-03-18 77 views
1

我的應用使用this GsonRequest實現來執行HTTP請求。 某些請求參數不是簡單的字符串鍵和字符串值,但是某些值也可以是映射。Android - 將嵌套地圖轉換爲JSON字符串

例如:

{ 
    "Key1" : "value", 
    "Key2" : { 
     "Key2.1" : "value", 
     "Key2.2" : "value", 
     "Key2.2" : "value" 
    }, 
    "Key3" : "value" 
} 

的JSON以上參數可以使用HashMap就像這樣可以了:

Map<String, String> subMap = new HashMap<String, String>(); 

subMap.put("Key2.1", "value"); 
subMap.put("Key2.2", "value"); 
subMap.put("Key2.3", "value"); 

Map<String, String> map = new HashMap<String, String>(); 
map.put("Key1", "value"); 
map.put("Key2", subMap.toString()); 
map.put("Key3", "value"); 

然後我打電話GsonRequest並通過map

然而,請求時,發送的JSON居然是:

{ 
    "Key1" : "value", 
    "Key2" : "{Key2.1 = value, Key2.2 = value, Key2.2 = value}", <-- This is wrong 
    "Key3" : "value" 
} 

我試圖巢地圖使用JSONObject,沒有成功:

map.put("Key2.2", new JSONObject(subMap).toString()); 

會產生JSON :

... 
"Key2" : "{\"Key2.1\" : \"value\", \"Key2.2\" : \"value\", \"Key2.2\" : \"value\"}", 
... 

這一個看起來更好,如果我能逃脫斜線它會是正確的,但不是。

如何正確嵌套地圖並正確獲取JSON?

回答

1

想了一會兒,我意識到嵌套Strings是錯的,不應該使用。但我正在使用它,因爲我的GsonRequest擴展的類Request需要參數的HashMap<String, String>映射。

我所做的是強制通過HashMap<String, Object>地圖。我沒有預料到它會起作用,但我需要嘗試一下。它確實奏效。