fastjson的值过滤器ValueFilter

自定义要转换的值,比如使用fastJson将null值转空串""

使用fastjson序列化对象时,可以添加 值过滤器(ValueFilter),以此来对序列化出来的值做统一处理,步骤如下:

实现com.alibaba.fastjson.serializer.ValueFilter接口,
实现其Object process(Object object, String name, Object value)方法,
根据需要修改返回的值。
调用fastjson序列化对象时,使用此filter

实现ValueFilter接口:

public class SimpleValueFilter implements ValueFilter {
    public Object process(Object object, String name, Object value) {
        // 只要字段名中包含mobile,则值输出为一串星号
        if (name.toLowerCase().contains("mobile")) {
            return "";
        }
        return value;
    }
}

在序列化时使用值过滤器:

public class Main {
    public static void main(String[] args) {
        MyObject obj = new MyObject();
        obj.setName("YR");
        obj.setMobile("15977198020");
        obj.setUserMobile("15869198021");
        System.out.println(JSON.toJSONString(obj, new SimpleValueFilter()));
    }
}

输出结果:
{"mobile":"","name":"YR","userMobile":""}
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fastjson 是一个 Java 语言编写的高性能功能完善的 JSON 库。在 Fastjson 中,选择器(Selector)用于根据 JSON 字符串中的字段获取对应的 Java 对象或者数组元素。 以下是使用 Fastjson 选择器的示例: 假设我们有以下 JSON 字符串: ```json { "user": { "name": "张三", "age": 30, "address": { "city": "北京", "street": "朝阳路" } } } ``` 首先,我们需要创建一个 Java 类来表示 JSON 数据结构: ```java public class User { private String name; private int age; private Address address; // getter 和 setter 省略 } public class Address { private String city; private String street; // getter 和 setter 省略 } ``` 然后,我们可以使用 Fastjson 的选择器功能来解析 JSON 字符串并获取相应的 Java 对象或数组元素: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; public class FastjsonDemo { public static void main(String[] args) { String jsonStr = "{\"user\":{\"name\":\"张三\",\"age\":30,\"address\":{\"city\":\"北京\",\"street\":\"朝阳路\"}}}"; User user = JSON.parseObject(jsonStr, User.class); // 根据 JSON 字符串和目标类反序列化为 Java 对象 System.out.println("姓名:" + user.getName()); // 输出:姓名:张三 System.out.println("年龄:" + user.getAge()); // 输出:年龄:30 System.out.println("城市:" + user.getAddress().getCity()); // 输出:城市:北京 System.out.println("街道:" + user.getAddress().getStreet()); // 输出:街道:朝阳路 } } ``` 在这个例子中,我们使用了 `JSON.parseObject()` 方法将 JSON 字符串解析为 `User` 类的实例。Fastjson 会自动根据 JSON 字符串中的字段设置 Java 对象的相应属性。如果 JSON 字符串中包含嵌套的对象或数组,可以使用选择器来访问它们。例如,`user.getAddress().getCity()` 会返回 "北京"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值