我正在尝试读取具有以下结构的 JSON 文件,我需要获取“一”和“三”
{
"images": [
{
"classifiers": [
{
"classifier_id": "id",
"name": "name",
"classes": [
{
"class": "uno",
"score": 0.770309
},
{
"class": "tres",
"score": 0.599846
}
]
}
],
"image": "tablero.jpg"
}
],
"images_processed": 1,
"custom_classes": 6
}
目前我像这样管理它,但我想通过循环读取它,因为可能需要收集更多该类型的数据。
Gson gson = new Gson();
JsonParser parser = new JsonParser();
FileReader fr;
try {
fr = new FileReader("documento.json");
JsonElement datos = parser.parse(fr);
//Obtenemos images
JsonObject jobject = datos.getAsJsonObject();
JsonArray arrayImages = jobject.getAsJsonArray("images");
System.out.println("jarray" + arrayImages);
jobject = arrayImages.get(0).getAsJsonObject();
//obtenemos classifiers
JsonArray arrayClassifiers = jobject.getAsJsonArray("classifiers");
System.out.println("Classifiers" + arrayClassifiers);
jobject = arrayClassifiers.get(0).getAsJsonObject();
//obtenemos classes
JsonArray arrayClasses = jobject.getAsJsonArray("classes");
System.out.println("Classes" + arrayClasses);
//Recorrer el arrayClasses y coger la primitiva class
jobject = arrayClasses.get(0).getAsJsonObject();
JsonPrimitive clase = jobject.getAsJsonPrimitive("class");
System.out.println("primitiva " + clase);
jobject = arrayClasses.get(1).getAsJsonObject();
JsonPrimitive prim2 = jobject.getAsJsonPrimitive("class");
System.out.println("primitiva " + prim2);
为该 json 建模的类的模型如下:
注意这
class
是java中的保留字,所以需要用注解指定序列化名称@SerializedName
要解析 json,它将是: