我有一个非常大的Json对象,类似于下面的结构。
{
"FDN": [{
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822548"
}, {
"FID": "LANGUAGE_ID",
"VAL": "FR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969007,
"DT": "20180504123302006"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822549"
}, {
"FID": "LANGUAGE_ID",
"VAL": "AR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969008,
"DT": "20180504123302007"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822550"
}, {
"FID": "LANGUAGE_ID",
"VAL": "FR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969009,
"DT": "20180504123302007"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822551"
}, {
"FID": "LANGUAGE_ID",
"VAL": "AR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969010,
"DT": "20180504123302008"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822552"
}, {
"FID": "LANGUAGE_ID",
"VAL": "FR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969011,
"DT": "20180504123302009"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822553"
}, {
"FID": "LANGUAGE_ID",
"VAL": "FR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969012,
"DT": "20180504123302010"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822554"
}, {
"FID": "LANGUAGE_ID",
"VAL": "FR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969013,
"DT": "20180504123302010"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822573"
}, {
"FID": "LANGUAGE_ID",
"VAL": "AR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969065,
"DT": "20180504080929368"
}, {
"OT": 0,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822573"
}, {
"FID": "LANGUAGE_ID",
"VAL": "AR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969066,
"DT": "20180504080929369"
}, {
"OT": 1,
"CL": [{
"K": [{
"FID": 348,
"VAL": "20822574"
}, {
"FID": "LANGUAGE_ID",
"VAL": "AR"
}]
}],
"NK": null,
"SS": 0,
"ITID": "NEWS",
"TSID": 44969067,
"DT": "20180504082130104"
}]
}
我想获得Language_ID =“AR”的所有元素 例如:
{
"FID": "LANGUAGE_ID",
"VAL": "AR"
}
你能告诉我一个怎么做的方法吗?
到目前为止,我的代码是:
JsonArray jsonArray = (JsonArray) convertedObject.get("FDN");
System.out.println("jsonArray>" + jsonArray.size());
List<JsonElement> CL= new ArrayList<JsonElement>();
for(int x=0; x < jsonArray.size(); x++){
JsonObject jObject4 = (JsonObject) jsonArray.get(x);
JsonElement e = jObject4.get("CL");
CL.add(jObject4.get("CL"));
}
System.out.println("CL>" + CL.get(0));
我刚刚打印了第一个元素,它就像:
[{"K":[{"FID":2085,"VAL":"148433"},{"FID":"LANGUAGE_ID","VAL":"EN"}]}]
请告诉我如何访问这些结构的LANGUAGE_ID。
答案 0 :(得分:1)
以下是访问FID的代码,其值为&#34; LANGUAGE_ID&#34;和相应的VAL。
public class GSONReading {
public static void main(String[] a) throws IOException {
FileReader jsonReader = new FileReader(new File("json.json"));
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonReader, JsonObject.class);
JsonArray fdnJsonArray = (JsonArray) jsonObject.get("FDN");
fdnJsonArray.forEach(jsonElement -> {
JsonArray clJsonArray = jsonElement.getAsJsonObject().get("CL").getAsJsonArray();
clJsonArray.forEach(clJsonItem -> {
JsonArray kJsonArray = clJsonItem.getAsJsonObject().get("K").getAsJsonArray();
kJsonArray.forEach(kArrayElement -> {
String fid = kArrayElement.getAsJsonObject().get("FID").getAsString();
if(fid != null && !fid.isEmpty() && fid.equalsIgnoreCase("LANGUAGE_ID")) {
String val = kArrayElement.getAsJsonObject().get("VAL").getAsString();
System.out.println(fid + ":"+ val);
}
});
});
});
}
}
输出:
LANGUAGE_ID:FR
LANGUAGE_ID:AR
LANGUAGE_ID:FR
LANGUAGE_ID:AR
LANGUAGE_ID:FR
LANGUAGE_ID:FR
LANGUAGE_ID:FR
LANGUAGE_ID:AR
LANGUAGE_ID:AR
LANGUAGE_ID:AR
请注意,我使用Java 8 forEach来访问数组或列表中的元素。如果您使用的是Java 6或7,则可能需要更改