[alibaba/fastjson]如何定制反序列化

2025-11-24 788 views
2

有没有方法在反序列化时指定不想反序列化的字段呢?比如VO中有id和name两个字段,在反序列化时只想反序列化id字段,其他不需要的字段不进行反序列化,以便提高效率,谢谢

回答

6

有个@JsonField的注解,可以看看

5

import com.alibaba.fastjson.annotation.JSONField;

@JSONField(serialize = false, deserialize = false)

1

@JSONField对所有的解析都是定死的,我想反序列化时动态决定字段是否反序列化可以做到吗,我的需求中有时用到全部数据,有时只用到部分数据,用到部分数据的时候就想只解析部分字段,谢谢

7

你想怎么来告诉json你想反序列化哪些数据呢

parse跟serialize有点不同,serialize时可以借助annotation之类的在结构上打标记,parse没这么方便

0

你是说发序列化时,动态提供一个key列表,只反序列化指定key的数据么?

6
Content content = new GsonBuilder()
                        .setExclusionStrategies(new ExclusionStrategy() {
                            @Override
                            public boolean shouldSkipField(FieldAttributes arg0) {
                                // 不解析test字段
                                return arg0.getName().equals("test");
                            }

                            @Override
                            public boolean shouldSkipClass(Class<?> arg0) {
                                return false;
                            }
                        })
                        .create()
                        .fromJson(json, Content.class);

之前用gson时,可以使用ExclusionStrategy来过滤掉不需要解析的字段,JSON是否也有类似的方法

0

@wenshao 你说的这个是序列化的时候,楼主说的是反序列化