java - 使用原语改造通用响应对象

标签 java android json retrofit

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

要验证我是否有

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

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

最佳答案

做出一些假设。假设您使用的是带有 gson 转换器的 retrofit 2。另外,您的 JSON 无效,我假设存在一个封闭对象 -

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

在 Java 中,您需要 Map 。在你的例子中,你将有一个 Map 的数组的。您可以将您的封闭类定义为 -

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

如果您知道所有值都将转换为字符串,则可以使用 Map<String, String> , 也。您可以使用 Container作为改造调用中的返回类型。

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

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

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

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

关于java - 使用原语改造通用响应对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33557355/

相关文章:

java - Vector中排序的实现

android - list 合并失败 : uses-sdk:minSdkVersion 14 cannot be smaller than version L

python - 如何使用Python从Json文件的嵌套列表中提取对象?

javascript - 将 JSON 字符串从 serializeArray() 转换为 sql 可存储字符串

java - 无法在 Windows 7 x64 上使用 gradle 构建 spring 框架

java - 如何配置 ProGuard 以省略带有 SuppressWarnings ("unused"的方法)

java - 具有给定长度单元测试的随机字符串

android - Google Nexus 7 和 10 的布局文件夹

javascript - 如何使用键为 "@"的文档在 couchDB 中创建 View

java - 多次调用 AsyncTask 失败(仅发生在旧版本的 android 上)