未能反序列化JSON来的HashMap <字符串,POJO>与GSON
我连接到一个返回JSON字典中键的arbitary数量web服务
看起来像
{
"arbitray_key_name": {
"foo_sticks": "objectName"
"bar_socks": ["A", "B"]
},
"another_key_name: {
"foo_sticks": "differentName"
"bar_socks": ["C", "D", "E"]
}
...
}
我正在使用Gson反序列化成一个HashMap。如果我做
HashMap<String, Object> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());
上述JsonData(减...显然)然后我得到正是我期待这是2项是一个HashMap,“arbitray_key_name”,“another_key_name”,其中每个值的键本身就是一个包含子对象的正确键/值信息的Map。
但是我有我想deserialise眺望该值的POJO类像
public class FooInfo {
@Key("foo_sticks")
public String fooSticks;
@Key("bar_socks")
public String[] barSocks;
}
如果我尝试做
HashMap<String, FooInfo> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, FooInfo>>() {}.getType());
然后我回来的两个项目,其中一个HashMap每个值都是FooInfo,但两个FooInfo对象中的字段均为空,Json尚未映射到对象中。我究竟做错了什么?
嗯,这似乎在这种情况下工作。然而,它破坏了一些其他代码对POJO进行反序列化(一个HTTP端点只响应一个没有键入字典的FooInfo对象)。 使用'@ Key'回到POJO的版本我使用Google的http-client库获取Json,结果是我做了Map dict =(Map ) response.parseAs(new TypeToken >(){} .getType());'这是双倍混淆的工作。 –