最終的な目的は、作成された名前と下のJsonから抽出された値(param1とparam2)。例えば:{(SW:5000 W)、(RW:5800 W)}ここGson APIを使用して複雑なネストされたjson構造の特定のキーと値のペアを抽出する方法
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を使用しました。何か案は?
大漁を、私はまだ同じエラーを取得します。私は、配列として何かを間違って扱うことと何かを考える。 –