如何解析JSON并设置为对象模型

时间:2019-06-26 07:21:38

标签: retrofit2 jsonschema2pojo

我有一个具有2种不同响应的API:

响应正常

{ "name": "test" }

响应KO

[
    {
        "name_1": "test",
        "name_2": "test"
    }
]

问题是通常使用Retrofit,我使用模型来解析结果,但响应KO没有数组名称。

如何创建模型? (我无法更改API)

1 个答案:

答案 0 :(得分:1)

因此,要添加另一个POJO,您可以执行以下操作:


private static Gson gson = new GsonBuilder()

 .registerTypeAdapter(Model1.class, new GsonDeserializer<Model1>())


 .registerTypeAdapter(Model2.class, new GsonDeserializer<Model2>())

//or  create a POJO for the names array of Model2
.registerTypeAdapter(Model2.class, new GsonDeserializer<Names>())

GsonDeserializer是可以定义的自定义序列化程序,例如:

public class GsonDeserializer<T> implements JsonDeserializer<T> {

@Override

public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {

 JsonObject el = json.getAsJsonObject();

 return new Gson().fromJson(el, typeOfT);

}

然后在Retrofit客户中,只需添加:


retrofit = new Retrofit.Builder()

.addConverterFactory(GsonConverterFactory.create(gson))

.build();