我正在尝试将以下 JSON 字符串解析为键值对,以便我可以将其插入数据库中的表中。
{
"name": "MyMobile",
"category": "cellphone",
"details": {
"displayAspectRatio": "97:3",
"audioConnector": "none",
"motherBoard": {
"Rom": "256GB",
"Ram": "8GB",
"Battery": "400mAH"
}
}
}
我可以使用以下代码解析 JSON 字符串GSON并将其存储到Map. 但不幸的是,它对于嵌套 JSON 对象效果不佳。
public static HashMap<String, Object> createHashMapFromJsonString(String json) {
JsonObject object = (JsonObject) parser.parse(json);
Set<Map.Entry<String, JsonElement>> set = object.entrySet();
Iterator<Map.Entry<String, JsonElement>> iterator = set.iterator();
HashMap<String, Object> map = new HashMap<String, Object>();
while (iterator.hasNext()) {
Map.Entry<String, JsonElement> entry = iterator.next();
String key = entry.getKey();
JsonElement value = entry.getValue();
if (null != value) {
if (!value.isJsonPrimitive()) {
if (value.isJsonObject()) {
map.put(key, createHashMapFromJsonString(value.toString()));
} else if (value.isJsonArray() && value.toString().contains(":")) {
List<HashMap<String, Object>> list = new ArrayList<>();
JsonArray array = value.getAsJsonArray();
if (null != array) {
for (JsonElement element : array) {
list.add(createHashMapFromJsonString(element.toString()));
}
map.put(key, list);
}
} else if (value.isJsonArray() && !value.toString().contains(":")) {
map.put(key, value.getAsJsonArray());
}
} else {
map.put(key, value.getAsString());
}
}
}
return map;
}
}
我希望我的地图中有以下行。谁能指导我正确的方法?
name = MyMobile
category = cellphone
details.displayAspectRatio = 97:3
details.audioConnector = none
details.motherBoard.Rom = 256GB
details.motherBoard.Ram = 8GB
details.motherBoard.Battery = 400mAH
12345678_0001
相关分类