Доступ к элементам JSON по ключу с помощью GSON - PullRequest
1 голос
/ 17 октября 2019

Что у меня есть: Я совершенно новичок в работе с файлами JSON. В настоящее время я использую Gson, чтобы создать два HashMaps<Key, List<Pair>> для хранения значений в. Я дошел до того, что могу создать файл JSON.

HashMap<Integer, List<Pair>> in = new HashMap<Integer, List<Pair>>();
HashMap<Integer, List<Pair>> out = new HashMap<Integer, List<Pair>>();
for (int i = 0; i < 300000, i++) {
    List<Integer> inList = new ArrayList<Pair>();
    List<Integer> outList = new ArrayList<Pair>();
    in.put(i, inList);
    out.put(i, outList);
}
gsonFile = new GsonBuilder().setPrettyPrinting().create();
FileWriter file = new FileWriter("newFile.json");
gsonFile.toJson(in, file);
gsonFile.toJson(out, file);
file.flush();

class Pair {
    int id;
    int value;

    //Some code here
}

, что дает мне следующий JSON файл:

{
   "0": [],
   "1": [], 
   "2": [],
   "3": [], 
   ...
   "300000": []
}
{
   "0": [],
   "1": [], 
   "2": [],
   "3": [],
   ...
   "300000": [] 
}

Что я хочу: Здесь мне интересно, как я могу использовать Gson для доступа, например, List<Pair> для Key = 3 в первом HashMap, чтобы затем добавить Pair объекты в него и затем записать обратно в файл. Например, что-то вроде:

List<Pair> list3 = gsonFile.get(0).get("3");
list3.add(new Pair(1, 1));

, чтобы стать:

{
   "0": [],
   "1": [], 
   "2": [],
   "3": [{"id": 1, "value": 1}], 
   ...
   "300000": []
}
{
   "0": [],
   "1": [], 
   "2": [],
   "3": [],
   ...
   "300000": [] 
}

Я использую этот метод для хранения значений, поскольку у меня должно быть где-то от 0 до 300 000 Pair объектовв одном List<Pair> и, следовательно, сохранение in и out в памяти приведет к ошибкам нехватки памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...