有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过转换gson将一些特定的表导出为文件

我正试图把我的两张房间桌子导出到phono的目录中。我得出的结论是,我使用Gson转换了两个表,并将其保存到本地目录中。但问题是我不知道如何将2个转换的JSON-s组合成一个

我的代码:

   //for first class
    Gson gson = new Gson();
    ArrayList<String> objStrings1 = new ArrayList<String>();
    for(Clas1 data: datas_1){
        objStrings.add(gson.toJson(data));
    }
    saveLocal(objStrings1)

    //for second class
    Gson gson = new Gson();
    ArrayList<String> objStrings2 = new ArrayList<String>();
    for(Clas2 data: datas_2){
        objStrings.add(gson.toJson(data));
    }
    saveLocal(objStrings2)

共 (1) 个答案

  1. # 1 楼答案

    您可以创建一个根Pojo,并将这两个列表绑定到一个类中。此外,它将比为每个实例生成JSON并在以后连接它更快。请参见下面的示例,其中展示了该想法:

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import org.apache.commons.lang3.RandomStringUtils;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.concurrent.ThreadLocalRandom;
    
    public class GsonApp {
    
        public static void main(String[] args) {
            List<Class1> class1s = Arrays.asList(new Class1(), new Class1(), new Class1());
            List<Class2> class2s = Arrays.asList(new Class2(), new Class2(), new Class2());
    
            Pojo root = new Pojo();
            root.setClass1s(class1s);
            root.setClass2s(class2s);
    
            Gson gson = new GsonBuilder()
                    .setPrettyPrinting()
                    .create();
    
            String json = gson.toJson(root);
            System.out.println(json);
    
            Pojo deserialised = gson.fromJson(json, Pojo.class);
            System.out.println(deserialised);
        }
    }
    
    class Pojo {
    
        private List<Class1> class1s;
        private List<Class2> class2s;
    
        // getters, setters, toString
    }
    
    class Class1 {
    
        private int id = ThreadLocalRandom.current().nextInt(100);
    
        // getters, setters, toString
    }
    
    class Class2 {
    
        private int age = ThreadLocalRandom.current().nextInt(70);
        private String name = RandomStringUtils.randomAlphanumeric(5);
    
        // getters, setters, toString
    }
    

    以上代码打印:

    {
      "class1s": [
        {
          "id": 2
        },
        {
          "id": 1
        },
        {
          "id": 3
        }
      ],
      "class2s": [
        {
          "age": 12,
          "name": "qXcaT"
        },
        {
          "age": 33,
          "name": "3wXv4"
        },
        {
          "age": 18,
          "name": "55XZ6"
        }
      ]
    }
    

    波乔斯:

    Pojo{class1s=[Class1{id=2}, Class1{id=1}, Class1{id=3}], class2s=[Class2{age=12, name='qXcaT'}, Class2{age=33, name='3wXv4'}, Class2{age=18, name='55XZ6'}]}