改装2响应没有型号
只有以下问题要求此问题1,2 但他们不解决我的问题。改装2响应没有型号
问:
假设我的API在http://www.example.com/getSomething
会给{"Status":"False"}
。
// desired
public Apiinter{
@GET("http://www.example.com/getSomething")
Observable<Boolean> getSomething();
}
我想是这样Observale<Boolean>
返回的,未做任何额外POJO的方式,如何实现这一
我尝试:
我可以使用POJO /模型(但我不想),我可以返回JSONObject
或JSONElement
,但这将不会使Observable<Boolean>
作为返回值
事实告诉我,我宁愿去用20+以上的POJO,但是你可以考虑添加你自定义的JsonDeserializer(假设你将使用GSON来解析你的API结果)。我能想到的解串器看起来沿着这些路线的东西:
private static class BooleanDeserializer implements JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject obj = json.getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = obj.entrySet();
return ((JsonElement)entrySet.toArray()[0]).getAsBoolean();
}
}
和设置GSON这样的:
Gson gson = new GsonBuilder()
.registerTypeAdapter(Boolean.class, new BooleanDeserializer()).create();
而且你RestAdapter:
final RestAdapter.Builder builder = new RestAdapter.Builder()
...
.setConverter(gson);
你可能是想乱与它一起,当然,这可以节省你的工作只是在一定程度上。我不知道你的API有什么不同,但是这对于你可能有不同API结构但只有一个有用值的情况应该是有用的。
我认为这可能是我需要感谢的东西 –
不客气!我忘了提及你可能想返回Observable
我会尝试自定义转换器。但为什么不POJO? – Raghunandan
这只是一个api的例子我有20 + api的只有一个变量作为json响应返回,所以想象做出那么多pojo的 –
这是病态的逻辑,你只是想传递基元数据类型。你还需要传递有价值的密钥来解析 –