Gson 自定义序列化不适用于 java.lang.Object

萨沙

我正在编写自定义 Gson 序列化程序

public class DogSerializer implements JsonSerializer<Object> {
@Override
public JsonElement serialize(Object src, Type typeOfSrc, 
JsonSerializationContext context) {

  JsonObject obj = new JsonObject();
  obj.addProperty("name", "sasha");
  return obj;
}

我也在注册序列化器

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Object.class, new DogSerializer());

现在,如果我这样做System.out.println(gsonBuilder.create().toJson([My-Test-Class])),则永远不会调用序列化程序。我希望在我通过时为所有字段调用序列化程序My-test-ClassObject.class似乎不起作用。我应该怎么办?

柳博米尔·沙伊达里夫

我应该怎么办?

如果可能,重新设计您的方法并绑定其他类型。您不能覆盖java.lang.Objectand 的序列化策略com.google.gson.JsonElement2.8.1 开始和之前的设计):

// built-in type adapters that cannot be overridden
factories.add(TypeAdapters.JSON_ELEMENT_FACTORY);
factories.add(ObjectTypeAdapter.FACTORY);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java GSON自定义反序列化器版本控制支持

如何解决java.lang对象多态性的Gson反序列化问题

使用gson和back进行序列化不适用于泛型类型

Google Gson-com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为字符串,但为BEGIN_OBJECT

获取java.lang.ClassNotFoundException:com.google.gson.Gson用于Maven项目

Gson&Java-尝试序列化java.lang.Class:.....忘记注册类型适配器?

Java中的Gson:试图反序列化java.lang.Class。忘记注册类型代言人

java.lang.IllegalStateException:使用GSON解析Json时,JSON OBJECT和JSON ARRAY

Gson和Active Android:尝试序列化java.lang.Class。忘记注册类型适配器?

获取java.lang.NoClassDefFoundError:com / google / gson / Gson

android studio java.lang.NoClassDefFoundError Gson

使用GSON序列化Java对象

Java中的GSON反序列化

List <Object>序列化不适用于多个对象

序列化IEnumerable <IDictionary <string,object >>不适用于DefaultNamingStrategy

GSON自定义序列化程序,用于带有“收集”字段的对象

Gson自定义反序列化器,用于String类

使用 GSON 序列化自定义类

gson嵌套的自定义序列化程序

Android GSON自定义反序列化

GSON 序列化因自定义对象而失败

使用GSON自定义反序列化枚举

GSON:自定义对象反序列化

自定义gson序列化抽象类

原始数组的自定义Gson反序列化

GSON:字符串的自定义序列化

foreach 不适用于类型“java.lang.String”

使用GSon反序列化Map <Object,Object>

如何使用 GSON 序列化 HashMap<Object,Object>?