我的应用使用this GsonRequest
实施来执行HTTP请求。
一些请求参数不是简单的字符串键和字符串值,但是某些值也可以是映射。
例如:
{
"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?
答案 0 :(得分:1)
经过一段时间的思考,我意识到嵌套Strings
是错误的,不应该使用。但我之所以使用它,是因为Request
扩展的课程GsonRequest
需要HashMap<String, String>
地图参数。
我所做的是强制通过HashMap<String, Object>
地图。我没想到它会起作用,但我需要尝试一下。它确实有效。