使用基元改进通用响应对象

时间:2015-11-06 00:25:07

标签: java android json retrofit

在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。键名可以是任何原始对象。

1 个答案:

答案 0 :(得分:2)

做出几个假设。假设您正在使用带有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<String, String>。您可以在改装调用中使用Container作为返回类型。

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

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

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

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