【发布时间】:2018-03-05 12:43:35
【问题描述】:
我像这样从另一台服务器获取 JsonObject:
{"data": {
"key": "Cooking.Oven.Program.HeatingMode.HotAir",
"options": [
{
"key": "Cooking.Oven.Option.SetpointTemperature",
"value": 230,
"unit": "°C"
},
{
"key": "BSH.Common.Option.Duration",
"value": 1200,
"unit": "seconds"
}
]
}
}
我的问题是现在。如何将此 JsonObject 分成较小的部分。 如果这将是具有一个键值对的普通对象,我会将其转移到地图中。但是这里有一行
Map<String, String> map = toMap(this.json);
private Map<String, String> toMap(JsonObject json) {
return new Gson().fromJson(json, new TypeToken<HashMap<String, String>>() {
}.getType());
}
抛出错误
Exception occurred while informing handler: java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAYcom.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY
将所有条目获取到地图的最简单解决方案是什么? 你对我有什么提示或线索吗?
【问题讨论】:
-
您尚未发布您的
toMap代码,但错误消息似乎不言自明。 -
你的问题是你试图映射到字符串,但是你的json中的数据不是字符串,而是复合对象
-
你可以试试
Map<String, Object>。 -
谢谢! Map
和函数 .toString() 的结合解决了我的问题。