【问题标题】:Get dirrectly data in Json with Gson使用 Gson 直接获取 Json 中的数据
【发布时间】:2016-01-22 04:55:24
【问题描述】:

我有一个相同的 json 字符串:

{
   k1: v1,
   k2: v2,
   k3: {
     k31:{
        k32:{
          k33:{
             k34: v3
          }
        }
     }
   }
   k4: v4,
   k5: v5,
   k6: v6,
}

我创建了一个对象 Object K = {k1, k2, k3, k4, k5, k6} 并且从上面的字符串中获取的值应该是 {v1, v2, v3, v4, v5, v6}

使用 Gson 很容易得到v1, v2, v4, v5, v6. 使用v3,如何直接获取,我不想制作对象包装器k33,然后是k32,然后是k31,然后是k3 来获取v3。

我们也不能通过 k31, k32, k33, k34 来获取 v3 作为 Jsoup
如果@SerializedName 结构体为@SerializedName("k3.k31.k32.k33.k34")。

请告诉我这个案例的解决方案。

【问题讨论】:

  • 我觉得你必须遍历才能得到对象。你不能直接得到v3。只有XML有这样的功能。
  • 对不起,我需要一个 Gson 的解决方案来直接解析,而不是一般如何解析。
  • 如果 Gson 具有 @SerializedName 结构为 @SerializedName("k3.k31.k32.k33.k34") 则很容易。但它没有
  • 研究这个并编写一些代码,以便我们为您提供帮助:javacodegeeks.com/2011/01/…

标签: android json parsing gson


【解决方案1】:

使用 Gson,您可以将 k3 和 k31 到 k34 视为 Json 数组。然后 K34 是一个 Json 对象来获取 k34 的值。试试这个:

String  value = jsonObj.getAsJsonArray("k3").getAsJsonArray("k31")
.getAsJsonArray("k32").getAsJsonArray("k33").getAsJsonObject().get("k34");

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2012-08-15
    • 2020-09-29
    • 2022-01-14
    相关资源
    最近更新 更多