【发布时间】:2016-04-26 20:29:47
【问题描述】:
我的最终目标是制作一个带有作者名称和从下面的 Json 中提取的值的地图(param1 和 param2 的英文值)。例如:{(S-W: 5000 W),(R-W: 5800 W)}
string =
[
{
"title":"Specifications",
"sort":1,
"specValues":[
{
"name":"xxx",
"type":"yyy",
"englishValue":"xx.0 lb",
"metricValue":"yy.0 kg",
"sort":4
},
{
"name":"Param1",
"type":"measurement",
"englishValue":"5000.0 W",
"metricValue":"5000.0 W",
"sort":99
},
{
"name":"Param2",
"type":"measurement",
"englishValue":"5800.0 W",
"metricValue":"5800.0 W",
"sort":99
},
{
"name":"Frequency",
"type":"measurement",
"englishValue":"60.0 Hz",
"metricValue":"60.0 Hz",
"sort":99
}
]
}
]
这是我提取它的代码及其下面的错误:
public Map<String, String> parseGenGson(String jsonLine) {
Map <String,String> generatorMap = new LinkedHashMap <String,String>();
try {
JsonElement jelement = new JsonParser().parse(jsonLine);
JsonArray jarray1 = jelement.getAsJsonArray();
JsonArray jarray = (JsonArray) jarray1.get(2);
JsonObject jobject1 = jarray.getAsJsonObject();
JsonArray jarray2 = jobject1.getAsJsonArray("specValue");
JsonObject jobject = jarray2.get(1).getAsJsonObject();
String result1 = jobject.get("englishValue").toString();
generatorMap.put("Running Watts",result1);
jobject = jarray.get(2).getAsJsonObject();
String result2 = jobject.get("englishValue").toString();
generatorMap.put("Starting Watts",result2);
log.info("Map of generators" + generatorMap);
return generatorMap;
} catch (Exception e){
log.error(e.getMessage());
return generatorMap;
}
}
错误:
Index: 2, Size: 1
我使用的结构有些问题,我使用了 GSon API。有什么想法吗?
【问题讨论】:
标签: java json dictionary gson