gpt4 book ai didi

java - 用 Gson 解析这个奇怪的嵌套 HashMap

转载 作者:行者123 更新时间:2023-11-30 06:29:15 29 4
gpt4 key购买 nike

我有一个包含以下字段的对象,我正在尝试解析该对象,该对象来自网络服务:

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”数组。因此,当我尝试使用 Gson.fromJson(theString, myclass.class) 将 json 解析为我的对象时,我得到一个com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY异常(exception)。我可以做什么来解析 HashMap ?

顺便说一句,Web 服务使用 moxy 来编码对象。

最佳答案

您定义了serviceMetadatanew HashMap<String, String>()

但它应该是对象列表的 Map

您的 key 是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<>(); 

关于java - 用 Gson 解析这个奇怪的嵌套 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474846/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com