【问题标题】:Retrofit, how to parse JSON objects with variable keys改造,如何使用可变键解析 JSON 对象
【发布时间】:2016-02-13 22:37:58
【问题描述】:

首先我知道我的标题很糟糕,因为我没有提出更好的建议,我愿意接受建议。

我正在使用改造从此类 api 获取数据:@GET("users/{userid}")

它工作正常,我很满意,问题是当我用 @POST("users/widget") 调用同一个 api 和一个 id 列表时。我有以下答案:

{
  "long_hash_id": {
    "_id": "long_hash_id"
    .......
  },
  "long_hash_id": {
    "_id": "long_hash_id",
    .....
  },
  ........
}

“long_hash_id”通常是“525558cf8ecd651095af7954” 它对应于附加到它的用户的ID。

在不使用retrofit的时候,我使用Gson的stream模式,一一获取每个用户。但我不知道如何告诉改造。

希望我清楚并且 提前谢谢你。

----------- 解决方案:

我的界面是这样设计的:

@FormUrlEncoded
@POST(AppConstants.ROUTE_USER_GROUP)
Call<Map<String,User>> getUsers( @Field("ids") List<String> param, @QueryMap Map<String,String> options);

我只是简单地给出了我的 ArrayList 的 id。非常感谢

【问题讨论】:

  • 你想解析它吗?或者问题出在哪里
  • 是的,我想用改造来解析它,现在我不使用改造。

标签: android json gson retrofit


【解决方案1】:

Gson 能够处理带有可变键的 JSON 对象,就像您发布的那样。在这种情况下,您要做的就是声明一个Map&lt;String, ModelClass&gt;,其中ModelClass 是您要表示的JSONObject 的内容

【讨论】:

  • 谢谢!我向谁声明?我创建了一个包含这个地图的新模型?也许你有一个链接或关键词让我找到它?
  • 发布您正在使用的代码。您的 Retrofit 接口声明和 Model 类。我会尽力指导你完成这个过程
  • 好的,我做到了,“jsonObjectToUrlEncodedString”在这种情况下采用 json 数组并将其转换为 urlencoded,
  • 现在我使用泛型,因为它是一种用于许多以相同方式工作的路由的方法
  • 好的,非常感谢它成功了。我更新了我的标题和我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2017-05-12
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多