此问题仅针对此问题提出以下问题1,2 但他们没有解决我的问题。
假设http://www.example.com/getSomething
的api会给{"Status":"False"}
。
// desired
public Apiinter{
@GET("http://www.example.com/getSomething")
Observable<Boolean> getSomething();
}
我希望返回Observale<Boolean>
之类的内容,而不会在路上添加任何额外的 POJO ,如何实现
我的尝试:
我可以使用 POJO /模型(但我不想),我可以返回JSONObject
或JSONElement
,但这不会使make {{ 1}}作为返回值
答案 0 :(得分:0)
说实话,我还是宁愿选择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结构但只有一个有用值的情况非常有用。