Gson

tox1cozZ

aka Agravaine
8,453
599
2,906
Никак не могу понять, как парсить gson.
public static class MapData{
        public String name;
        public String info;
        public List<Vector3d> spawns = Lists.newArrayList();
    }
Есть такой класс. Нужно десереализировать его и записать все в лист.
То бишь чтобы я мог дописать в файл что-то, а он потом это считал и записал в List<MapData>.
 
Что за Vector3d? Там нет никаких лишних полей? Если нет, то десериализуется все в пару строк.
Код:
Gson gson = new GsonBuilder().create();
someThing = gson.fromJson(jsonStr, MapData.class);
jsonStr - строка с твоим файлом. Уж надеюсь, что прочитать файл сможешь)
 
Я уже разобрался =)

Код:
Type listType = new TypeToken<List<MapData>>(){}.getType();
        List<MapData> to = new LinkedList<MapData>();
        to.add(new MapData("awp_india", "Simple awp map", Arrays.asList(new Vector3d(0, 2, 1), new Vector3d(2, 6, 0))));
        to.add(new MapData("35hp_2", "Simple knife map", Arrays.asList(new Vector3d(2, 2, 7), new Vector3d(7, 2, 6))));

        String json = gson.toJson(to, listType);

        FileWriter writer = new FileWriter(mapListFile);
        writer.write(json);
        writer.close();

        List<MapData> from = gson.fromJson(json, listType);

Выход:


Код:
[
  {
    "name": "awp_india",
    "info": "Simple awp map",
    "spawns": [
      {
        "x": 0.0,
        "y": 2.0,
        "z": 1.0
      },
      {
        "x": 2.0,
        "y": 6.0,
        "z": 0.0
      }
    ]
  },
  {
    "name": "35hp_2",
    "info": "Simple knife map",
    "spawns": [
      {
        "x": 2.0,
        "y": 2.0,
        "z": 7.0
      },
      {
        "x": 7.0,
        "y": 2.0,
        "z": 6.0
      }
    ]
  }
]
 
Назад
Сверху