[alibaba/fastjson]如何进行实现类的反序列化? 直接反序列化数据会丢失

2025-10-31 623 views
2

MsgAttachment 是 interface CustomAttachment implements MsgAttachment 直接进行JSON.parser( json, MsgAttachment.class) 会丢失 CustomAttachment 的属性。

请问如何进行ParserConfig设置,能够正确反序列化出 CustomAttachment ?

ParserConfig.getGlobalInstance().putDeserializer(MsgAttachment.class, new ObjectDeserializer() {
                        @Override
                        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
                           //此处已经能正确获得 CustomAttachment 在序列化之后的 字符串了
                          //这里应该如何创建一个对象?
                            return null;
                        }

                    });

回答

0

new CustomAttachment set fields and properties

8

@kimmking

是在什么地方处理? 这个 CustomAttachment 是在 MsgData 里面的一个属性。 CustomAttachment 本身还不是最外层 能否提供一个简单的示例? 谢谢

3

当您将 MsgAttachment 类型传递给解析器时,解析器无法知道应该将 json 作为 CustomAttachment 对象进行处理。

6

you can use this:

MsgData<T extends MsgAttachment>

also see:

JSON.parseObject(json, new TypeReference<MsgData<CustomAttachment>>() {});
2

@kimmking thanks ,直接用 jsonObj 逐个获取然后赋值给不同集成类解决了