将JSON中的对象转换为Java中的映射

时间:2019-05-28 10:46:08

标签: java json string hashmap gson

曾经尝试使用Gson将JSON中的对象转换为Java,但很多事情都不尽人意。 在对象是int类型之前,现在将其转换为对象。 这是JSON的一部分(我只需要损坏就可以转换):

我已经在线尝试了大多数指南,但仍然没有帮助。

[
  {
    "username": "lol",
    "value": [
      "one","two"
    ],
    "Power": [
      {
        "type": "Damage",
        "damage": {"first":2, "second":0,"third":0}
}]}]

2 个答案:

答案 0 :(得分:0)

您尝试解析的JSON似乎不是有效的Json结构。使用此https://jsonformatter.curiousconcept.com/来验证JSON结构并尝试解析。

答案 1 :(得分:0)

要将您的文本转换为哈希图,请使用它。

String yourJson = "insert your JSON here";
Type type = new TypeToken<List<Map<String, Object>>>() {}.getType();
List<Map<String, Object>> parsedJson = new Gson().fromJson(yourJson, type);

现在您可以通过以下方式访问它:

Map<String, Object> user = (Map<String, Object>) parsedJson.get(0);
List<Map<String, Object>> userPowers = (List<Map<String, Object>>) user.get("Power");
Map<String, Object> usersFirstPower = userPowers.get(0);
Map<String, Object> firstPowerDamage = (Map<String, Object>) usersFirstPower.get("damage");
System.out.println(firstPowerDamage.get("first").toString());

编辑

这是使用Gson的另一种方式:

String yourJson = "...";
JsonArray map = (JsonArray) new JsonParser().parse(yourJson);
System.out.println(map.get(0).getAsJsonObject().get("Power").getAsJsonArray().get(0).getAsJsonObject().get("damage"));