解析这个奇怪的嵌套的HashMap与GSON
问题描述:
我有以下字段,其中我试图解析的对象,从一个Web服务来:解析这个奇怪的嵌套的HashMap与GSON
private String serviceGroup;
private String serviceDefinition;
private List<String> interfaces = new ArrayList<>();
private Map<String, String> serviceMetadata = new HashMap<>();
出于某种原因,JSON有与此对象这样的格式:
"service": {
"interfaces": [
"json"
],
"serviceDefinition": "IndoorTemperature",
"serviceGroup": "Temperature",
"serviceMetadata": {
"entry": [
{
"key": "security",
"value": "token"
},
{
"key": "unit",
"value": "celsius"
}
]
}
}
这里额外的,不需要的部分是serviceMetadata Hashmap中的“entry”数组。所以当我试图解析json到我的对象Gson.fromJson(theString, myclass.class)
,我得到了一个com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY
例外。我能做些什么来解析散列表?
顺便说一下,web服务使用moxy来编组对象。
答
您定义serviceMetadata
为new HashMap<String, String>()
但应对象
你的关键是entry
名单的地图和列表是:
[{
"key": "security",
"value": "token"
}, {
"key": "unit",
"value": "celsius"
}]
因此,解决办法是 - 创建一些类Entry
:
public class Entry{
private String key;
private String value;
}
现在:
private Map<String, List<Entry>> serviceMetadata = new HashMap<>();
@anomeric地图的键/值,其中值对象 –
感谢名单,它的工作。我可以在9分钟内接受答案。 –