Java 解析包含更改键的嵌套JSON对象

Java 解析包含更改键的嵌套JSON对象,java,json,parsing,gson,Java,Json,Parsing,Gson,我在java中使用Gson解析JSON文件。问题是json对象包含另一组对象。这不会是一个问题,因为我可以创建另一个类并将其输入。问题是这些子对象包含的关键点在每个子对象中都可能不同。我不知道该怎么处理。 下面是JSON的剪贴画: [ { "a": "aa", "b": 1, "c": "cc", "d": 2.2, "e&

我在java中使用Gson解析JSON文件。问题是json对象包含另一组对象。这不会是一个问题,因为我可以创建另一个类并将其输入。问题是这些子对象包含的关键点在每个子对象中都可能不同。我不知道该怎么处理。 下面是JSON的剪贴画:

[
  {
    "a": "aa",
    "b": 1,
    "c": "cc",
    "d": 2.2,
    "e": 3.3,
    "obj1": {"lu":1,"lo":1},
    "arr1": [],
    "obj2": {}
  },
   {
    "a": "aaa",
    "b": 4,
    "c": "ccc",
    "d": 5.5,
    "e": 6.6,
    "obj1": {"bli":1},
    "arr1": ["Some String"],
    "obj2": {
      "foo": 100,
      "bar": 50,
      "bla": 1
    }
  },
   {
    "a": "aaaa",
    "b": 7,
    "c": "cccc",
    "d": 8.8,
    "e": 9.9,
    "obj1": {},
    "arr1": ["Some String", "Another one"],
    "obj2": {
      "la": 300,
      "le": 20000
    }
  }
]
如您所见,obj1和obj2包含不一致的键。 以下是我将数据解析为的jObject类的当前代码:

public class jObject {
    String a;
    Integer b;
    String c;
    Double d;
    Double e;
//  List<Pair<String,Integer>> obj1;
    List<String> arr1;
//  List<Pair<String,Integer>> obj2;
    
    public jObject(String a, Integer b, String c, Double d, Double e,
                   List<Pair<String,Integer>> obj1, List<String> arr1,List<Pair<String,Integer>> obj2) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
        this.e = e;
        
    //  this.obj1 = obj1;
        this.arr1 = arr1;
    //  this.obj2 = obj2;
                   }
}
公共类jObject{
字符串a;
整数b;
字符串c;
双d;
双e;
//列出obj1;
清单1;
//列出obj2;
PublicJobject(字符串a、整数b、字符串c、双d、双e、,
列表obj1、列表arr1、列表obj2){
这个a=a;
这个.b=b;
这个.c=c;
这个。d=d;
这个。e=e;
//此参数为0.obj1=obj1;
这是arr1=arr1;
//此参数为0.obj2=obj2;
}
}
它适用于所有普通键以及“arr1”数组

如果您想知道,我实际上是如何解析它的:

Gson gson = new Gson();

Reader reader = Files.newBufferedReader(Paths.get("PATH_TO_JSON"));
List<jObject> objects = gson.fromJson(reader, new TypeToken<List<jObject>>() {}.getType());
Gson-Gson=new-Gson();
Reader Reader=Files.newbuffereder(PATH.get(“PATH_TO_JSON”));
List objects=gson.fromJson(reader,new-TypeToken(){}.getType());
我想要实现的是,“obj1”和“obj2”将作为jObject类的一部分保存为字符串和整数元组的列表

我到处找了不少,但找不到与这个问题有关的任何东西


提前谢谢

JsonObject无法轻松解析为列表或数组。但它可以很容易地解析为映射,例如,可以使用entrySet()方法手动转换为Set的映射


更困难的方法是为特定类型实现您自己的反序列化程序,例如对列表。

您可以使用
Map

公共类jObject{
字符串a;
整数b;
字符串c;
双d;
双e;
Map obj1;
清单1;
地图obj2;
PublicJobject(字符串a、整数b、字符串c、双d、双e、,
地图obj1、列表arr1、地图obj2){
这个a=a;
这个.b=b;
这个.c=c;
这个。d=d;
这个。e=e;
此参数为0.obj1=obj1;
这是arr1=arr1;
此参数为0.obj2=obj2;
}
}