阅读JsonObject Java
我从另一台服务器获得一个JsonObject,如下所示:阅读JsonObject Java,java,json,Java,Json,我从另一台服务器获得一个JsonObject,如下所示: {"data": { "key": "Cooking.Oven.Program.HeatingMode.HotAir", "options": [ { "key": "Cooking.Oven.Option.SetpointTemperature", "value": 230, "unit": "°C" }, { "key": "
{"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());
}
将所有条目添加到地图最简单的解决方案是什么?
你有什么提示吗?试试这个:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//... get JSON string
String jsonResponse = yourJsonResponseString;
// parse JSON
JSONObject jsonObject = new JSONObject (jsonResponse);
JSONObject data = jsonObject.getJSONObject("data");
String key = data.getString("key");
JSONArray options = data.getJSONArray("options");
for(i=0; i<options.length(); i++){
JSONObject optionsObject = options.getJSONObject(i);
String key = optionsObject.getString("key");
int value = optionsObject.getInt("value");
String unit = optionsObject.getString("unit");
// ... put these values into some object or store it somehow..
}
因此,首先必须将JSON中的值转换为字符串、int等,然后才能将这些值添加到自定义数据结构中。
我希望我能帮助您。您还没有发布toMap代码,但错误消息似乎是自我解释的。您的问题是您试图映射到字符串,但json中的数据不是字符串,而是复合对象您可以尝试映射。谢谢!地图和功能的结合。toString解决了我的问题。谢谢你的回答。我以后再试试。我用另一种方法解决了这个问题。见上面的评论。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//... get JSON string
String jsonResponse = yourJsonResponseString;
// parse JSON
JSONObject jsonObject = new JSONObject (jsonResponse);
JSONObject data = jsonObject.getJSONObject("data");
String key = data.getString("key");
JSONArray options = data.getJSONArray("options");
for(i=0; i<options.length(); i++){
JSONObject optionsObject = options.getJSONObject(i);
String key = optionsObject.getString("key");
int value = optionsObject.getInt("value");
String unit = optionsObject.getString("unit");
// ... put these values into some object or store it somehow..
}