Как мога да използвам 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 файл, съдържащ горната информация, това, което се надявах да направя, е да създам масив за всеки тип, като базово ниво, трудност, издръжливост, ниво, максимално качество и име (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);

}

Сега не съм сигурен как да конвертирам това в String Array (ако изобщо е възможно?), Тъй като получавам грешка при изключение, когато се опитвам да конвертирам names_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