将以下 JSON 反序列化为 POJO 时遇到问题。我无法控制 JSON 结构,否则我会以其他方式实现它,但是,这就是你的生活。
{
"1":{
"test":"1",
"other":"stuff"
},
"2":{
"test":"2",
"other":"stuff2"
}
}
无论如何,我试图通过使用POJO来反序列化:
public Map<Integer, Payload> payload;
但是虽然Map的大小为2,但当我尝试获取每个大小时,它的内容都是 null 。对我做错了什么的想法?
谢谢
答案 0 :(得分:1)
我不知道有效载荷类是怎么样的,但它应该是这样的:
class Payload {
String test;
String other;
@Override
public String toString() {
return "Payload [test=" + test + ", other=" + other + "]";
}
}
如果断言这个条件,那么你可以使用TypeToken&gt;反序列化json。作为 danypata 的标记建议......如:
public static void main(String args[]) throws InterruptedException {
String ff = "{\"1\":{" + "\"test\":\"1\"," + "\"other\":\"stuff\"" + "}," + "\"2\":{" + "\"test\":\"2\","
+ "\"other\":\"stuff2\"" + "}}";
Gson gson = new Gson();
Type mapType = new TypeToken<Map<String, Payload>>() {
}.getType();
Map<String, Payload> map = gson.fromJson(ff, mapType);
System.out.println(map);
for (Entry<String, Payload> entry : map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
给出结果:
{1 = Payload [test = 1,other = stuff],2 = Payload [test = 2,other = stuff2]}
1 有效负载[test = 1,其他=东西]
2 有效负载[test = 2,other = stuff2]
答案 1 :(得分:0)
为什么不使用Android JSONObject class?然后,您可以使用它解析整个JSON字符串,然后您可以轻松获取值。例如,这是为了获得你的&#34; 1&#34; JSON对象:
final JSONObject jsonObject = new JSONObject(jsonString);
final String test = jsonObject.getJSONObject("1").getString("test");
final String other = jsonObject.getJSONObject("1").getString("other");