【问题标题】:Getting a Value from a JsonArray using gson使用 gson 从 JsonArray 中获取值
【发布时间】:2017-05-12 07:36:01
【问题描述】:

我到处搜索,但找不到如何做到这一点,我超级卡住了。我没有使用 JSON 文件的经验,因此非常感谢您用勺子喂食并提供解释。

我这里有这个 JSON 文本用于测试:

    {
      "id":"4566e69fc90748ee8d71d7ba5aa00d20",
      "properties":
                    [
                     {
                      "name":"textures",
                      "value":"eyJ0aW1lc3RhbXAiOjE0ODI4ODAxNDMwNzYsInByb2ZpbGVJZCI6IjQ1NjZlNjlmYzkwNzQ4ZWU4ZDcxZDdiYTVhYTAwZDIwIiwicHJvZmlsZU5hbWUiOiJUaGlua29mZGVhdGgiLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTNlODFiOWUxOWFiMWVmMTdhOTBjMGFhNGUxMDg1ZmMxM2NkNDdjZWQ1YTdhMWE0OTI4MDNiMzU2MWU0YTE1YiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjJiOWM1ZWE3NjNjODZmYzVjYWVhMzNkODJiMGZhNjVhN2MyMjhmZDMyMWJhNTQ3NjZlYTk1YTNkMGI5NzkzIn19fQ==",
                     },
                    ],
      "name":"Thinkofdeath",
    }

我目前有这个:

    JsonElement playerProfile = new JsonParser().parse(jsonLine);
    JsonObject jsonProfile = playerProfile.getAsJsonObject();
    JsonArray properties = jsonProfile.getAsJsonArray("properties");

返回 [

[
  {
    "name":"textures",
    "value":"eyJ0aW1lc3RhbXAiOjE0ODI4ODAxNDMwNzYsInByb2ZpbGVJZCI6IjQ1NjZlNjlmYzkwNzQ4ZWU4ZDcxZDdiYTVhYTAwZDIwIiwicHJvZmlsZU5hbWUiOiJUaGlua29mZGVhdGgiLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTNlODFiOWUxOWFiMWVmMTdhOTBjMGFhNGUxMDg1ZmMxM2NkNDdjZWQ1YTdhMWE0OTI4MDNiMzU2MWU0YTE1YiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjJiOWM1ZWE3NjNjODZmYzVjYWVhMzNkODJiMGZhNjVhN2MyMjhmZDMyMWJhNTQ3NjZlYTk1YTNkMGI5NzkzIn19fQ==",
  },
]

当然。如何从此 JsonArray 中获取“价值”?注意我使用的是 Google 的 API,Gson

【问题讨论】:

  • 对我来说,通常我将 json 建模为 pojo —— 但你总是可以get it as a JsonElement 然后get as json object,最后get("value") 得到value 作为(可悲的)JsonElement。 . 这是相当迂回的,但可以肯定的是,我建议你做 pojo..
  • 感谢您的帮助,但就像我说的,我对这个 JSON 东西完全陌生,有点需要用勺子喂食:P

标签: java arrays json gson


【解决方案1】:

您可以通过以下方式获取values

JsonObject propertiesJson = properties.get(0);
String value = propertiesJson.getString("value");

【讨论】:

  • 啊哈!它有效,只是它不是“getString”它的“get(“value”).toString”
  • @SageM 如果您使用 Json 库,请尝试使用它的方法以获得更好的便利。获取值:propertiesJson.get("value").getAsString();
  • properties.get(0) 是 JsonElement,而不是 Gson 中的 JsonObject。我使用了这段代码。字符串名称 = properties.get(0).getAsJsonObject().get("name").getAsString();
【解决方案2】:

数组是来自 com.google.gson 库的 JsonArray 对象

for (int i=0; i<array.size(); i++) {
    JsonObject json = array.get(i).getAsJsonObject();
    String value = json.get("key").getAsString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2015-10-06
    • 2017-03-09
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多