如何使用Gson字符串为每种类型创建字符串数组?

时间:2016-02-18 22:55:23

标签: java arrays json 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和name(en),但是我完全迷失了如何做到这一点。

目前我的设置是(使用GSON):

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

我不确定我是否打算使用jsonElement或prettyJson []构建我想要创建的数组,更不用说如何了。我尝试过一些研究,但是没有运气,或者发现任何与我想做的事情有关的例子。

如果有人能够指出我正确的方向,或提供一个如何实现我的目标的例子,那就太棒了。

谢谢大家!

EDIT1: 我相信我修复了我的第一个问题,并创建了一个包含所有" en"的JsonElement。通过以下代码填写字段:

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);

}

我现在不确定如何将其转换为字符串数组(如果它甚至可能?)因为我在尝试将names_e转换为JsonArray时遇到异常错误。

1 个答案:

答案 0 :(得分:0)

我不确定你能否一步到位。您可以迭代所获得的数组并将特定值拉出以存储在新数组中。如下所示。

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

for (Item item : myItemList.getItems) {
    baseLevelArrayList.add(item.getBaseLevel);
    ...
}