【问题标题】:Retrofit generic response object with primitives用原语改造通用响应对象
【发布时间】:2015-11-06 00:25:06
【问题描述】:

在 iOS 中,响应不需要专门封装在对象中。这允许动态对象返回,您可以只引用您需要的特定对象(请参阅Decode JSON to NSArray or NSDictionary)。 Android 中是否有使用改造的等效方法?

如果我有的话就去钙化

"content":
  [   
    {
      "x":"1",
      "a":"b",
      "b":"c",
      "c":"d",
      "mark":"yes"
    }
  ] 

我会得到一个对象,我可以调用 object.x 并获取 1,或者 object.a 并获取 b。其中键名可以是任何原始对象。

【问题讨论】:

    标签: java android json retrofit


    【解决方案1】:

    做几个假设。假设您正在使用带有 gson 转换器的改造 2。此外,您的 JSON 无效,我将假设存在一个封闭对象 -

    {
      "content":
        [   
          {
            "x":"1",
            "a":"b",
            "b":"c",
            "c":"d",
            "mark":"yes"
          }
        ]
    }
    

    在 Java 中,您需要Map。在您的情况下,您将拥有Map 的数组。你可以这样定义你的封闭类——

    public class Container {
        Map<String, Object> content[];
    }
    

    如果你知道你所有的值都会变成字符串,你也可以使用Map&lt;String, String&gt;。您将在改造电话中使用Container 作为您的返回类型。

    @GET("/")
    Call<Container> getSomething();
    

    假设您将结果放入名为 container 的变量中,您可以使用 get 访问字段。

    container.content[0].get("mark");
    

    请注意,您需要添加适当的空值和边界检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2015-09-16
      • 1970-01-01
      • 2020-09-17
      • 2020-01-31
      • 2021-03-15
      相关资源
      最近更新 更多