Экспортировать некоторые конкретные таблицы в файл путем преобразования gson - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь экспортировать две мои таблицы комнат в каталог фоно.Я понял, что я конвертирую две таблицы, используя Gson, и сохраняю их в локальном каталоге.Но проблема в том, что я не знаю, как объединить эти 2 преобразованные JSON -ые в одну.

Мои коды:

   //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 Ответ

0 голосов
/ 17 апреля 2019

Вы можете создать один корень 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"
    }
  ]
}

Pojos:

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'}]}
...