Как я могу использовать строку Gson для создания массива строк для каждого типа?

Моя цель — импортировать файл JSON, и для каждого элемента объекта JSON я хочу создать массив для каждого типа этого элемента. Если это не имеет смысла, то я хочу сделать следующее:

Учитывая следующий текст в файле JSON:

...,
{
"baseLevel": 50,
"difficulty": 233,
"durability": 80,
"level": 70,
"maxQuality": 2921,
"name": {
  "de": "Trauzeugen-Jacke",
  "en": "Best Man's Jacket",
  "fr": "Veste de témoin",
  "ja": "??????????"
        },
"stars": 2
}
,...

У меня есть большое количество записей в моем файле JSON, содержащих указанную выше информацию, и я надеялся создать массив для каждого типа, например baseLevel, сложность, долговечность, уровень, maxQuality и имя (en), однако я совершенно потерялся в том, как это сделать.

Моя настройка на данный момент (используя GSON):

JsonElement jsonElement = parser.parse(in);
prettyJson[i] = gson.toJson(jsonElement);

Я не уверен, должен ли я использовать jsonElement или prettyJson[] для создания массива, который я хочу создать, не говоря уже о том, как это сделать. Я пытался провести некоторое исследование, но мне не повезло, и я не нашел примеров, которые, по-видимому, относятся к тому, что я пытаюсь сделать.

Если бы кто-нибудь мог указать мне правильное направление или привести пример того, как достичь моей цели, это было бы здорово.

Спасибо всем!

Edit1: кажется, я исправил свою первую проблему и создал JsonElement, содержащий все поля "en", с помощью приведенного ниже кода:

JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(in);
JsonArray recipe_array = jsonElement.getAsJsonArray();
for (Object o : recipe_array) {
    JsonObject recipe = (JsonObject) o;
    JsonElement names = recipe.get("name");
    String names_s = names.toString();
    JsonElement names_e = parser.parse(names_s).getAsJsonObject().get("en");
    System.out.println(names_e);

}

Теперь я не уверен, как преобразовать это в массив строк (если это вообще возможно?), так как я получаю ошибку исключения при попытке преобразовать named_e в JsonArray.


person TMP4    schedule 18.02.2016    source источник


Ответы (1)


Я не уверен, что вы можете достичь этого за один шаг. Вы можете перебрать полученный массив и извлечь конкретное значение для сохранения в новом массиве. Как следующее.

Gson gson = new Gson();
MyItemList myItemList = gson.fromJson(jsonFile, myItemList.class);

for (Item item : myItemList.getItems) {
    baseLevelArrayList.add(item.getBaseLevel);
    ...
}
person Dnakin    schedule 18.02.2016
comment
Является ли MyItemList определенным классом? Потому что я не уверен, как это применить? - person TMP4; 19.02.2016
comment
MyItemList будет классом для вашего корневого объекта. Просто класс с одним ArrayList, содержащим все ваши элементы. - person Dnakin; 19.02.2016
comment
Спасибо, я закончил поиск и сумел преобразовать первый набор в строку и повторно проанализировать его в объект, который затем выбрал только раздел en. Из этого я смог преобразовать его в массив строк, который использовался для заполнения моих выпадающих меню. - person TMP4; 20.02.2016