自定义 GSON 解析

Custom GSON parsing

我有以下 pojo:

 public class  PageRedirect implements Parcelable {

@SerializedName("method") private String method;
@SerializedName("url") private String url;
@SerializedName("parameters") private Parameters parameters;

//@SerializedName("parameters") private String params;
......}

参数字段的变化取决于原始 API 的某些参数。所以有时候是{}"json object",如果为空,就是array[]。我知道这是后端的错误。但我想找到一个快速的解决方法......我不想解析参数,而是想将它作为字符串作为注释行获取,然后我将对其进行处理。有什么想法吗?

创建 Gson 实例时,您可以设置自定义 class 反序列化器,如下所示:

final GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Parameter.class, new ParameterTypeAdapter());
final Gson gson = gsonBuilder.create();

PageRedirect pageRedirect = gson.fromJson(yourJsonString, PageRedirect.class);

然后您可以按如下方式创建您的 ParameterTypeAdapter

public class ParameterTypeAdapter extends TypeAdapter<Parameter> {

@Override
public void write(JsonWriter out, Calendar value) throws IOException {

}

@Override
public Calendar read(JsonReader in) throws IOException {
    // do your parsing here
}

您可以找到更多信息 here and here

编辑:

如果您只想将解析推迟到另一个时刻,您可以将 "parameters" 字段存储为 JsonElement:

@SerializedName("parameters") private JsonElement parameters;

之后,只需使用parameters.toString();

将其转换为字符串即可