Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GSON:可以为同一个对象使用多个自定义JSONSerializer吗_Java_Gson - Fatal编程技术网

Java GSON:可以为同一个对象使用多个自定义JSONSerializer吗

Java GSON:可以为同一个对象使用多个自定义JSONSerializer吗,java,gson,Java,Gson,使用GSON是否可以为单个对象指定多个JSONSerializer,以允许以编程方式公开不同的数据 例如,我有这个POJO public class Person { private Long id; private String name; private String email; private Set<Addresses> addresses; } 公共类人物{ 私人长id; 私有字符串名称; 私人字符串电子邮件; 专用地址集; }

使用GSON是否可以为单个对象指定多个JSONSerializer,以允许以编程方式公开不同的数据

例如,我有这个POJO

public class Person {

    private Long id;

    private String name;

    private String email;

    private Set<Addresses> addresses;
}
公共类人物{
私人长id;
私有字符串名称;
私人字符串电子邮件;
专用地址集;
}
相应的JsonSerializer:

public static final JsonSerializer<Person> serializer1 =
(Person src, java.lang.reflect.Type typeOfSrc, JsonSerializationContext context) -> {
    JsonObject personJson = new JsonObject();
    personJson.addProperty("name", src.getName());
    personJson.addProperty("email", src.getEmail());

    return personJson;
}
公共静态最终JsonSerializer序列化程序1=
(Person src、java.lang.reflect.Type typeOfSrc、JsonSerializationContext)->{
JsonObject personJson=新的JsonObject();
addProperty(“name”,src.getName());
addProperty(“email”,src.getEmail());
返回personJson;
}
现在我可以添加第二个JsonSerializer来公开替代数据了吗?如果是这样的话,您会如何告诉Gson区分这两种情况

public static final JsonSerializer<Person> serializer2 =
(Person src, java.lang.reflect.Type typeOfSrc, JsonSerializationContext context) -> {
    JsonObject personJson = new JsonObject();
    personJson.addProperty("name", src.getName());
    personJson.addProperty("email", src.getEmail());

    personJson.add("addresses", toJsonArray(src.getAddresses()))

    return personJson;
}
公共静态最终JsonSerializer序列化程序2=
(Person src、java.lang.reflect.Type typeOfSrc、JsonSerializationContext)->{
JsonObject personJson=新的JsonObject();
addProperty(“name”,src.getName());
addProperty(“email”,src.getEmail());
添加(“地址”,toJsonArray(src.getAddresses())
返回personJson;
}

您可以使用
GsonBuilder
及其方法构建
Gson
对象的多个实例。例如,请查看或使用
GsonBuilder
及其方法构建
Gson
对象的多个实例。例如,看看或