fastjson

作者: 小明17 | 来源:发表于2020-05-15 16:13 被阅读0次

maven:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>x.x.x</version>
</dependency>

java对象转json格式字符串:

JSON.toJSONString(Object o)

可以自定义输出,控制字段顺序,日期格式,是否序列化等,例如:

@JSONField(name="AGE", serialize=false)
private int age;
 
@JSONField(name="LAST NAME", ordinal = 2)
private String lastName;
 
@JSONField(name="FIRST NAME", ordinal = 1)
private String firstName;
 
@JSONField(name="DATE OF BIRTH", format="dd/MM/yyyy", ordinal = 3)
private Date dateOfBirth;

@JSONField 可作用于对象的字段 或者Getter,Setter

注意:FastJson 在进行操作时,是根据 getter 和 setter 的方法进行的,并不是依据 Field 进行。
注意:若属性是私有的,必须有 set 方法。否则无法反序列化。

JSON 字符串转换为 Java 对象:

JSON.parseObject(jsonStr, ObjectName.class);

注意反序列化时为对象时,必须要有默认无参的构造函数,否则会报异常

使用 ContextValueFilter 配置 JSON 转换

在某些场景下,对Value做过滤,需要获得所属JavaBean的信息,包括类型、字段、方法等:

@Test
public void givenContextFilter_whenJavaObject_thanJsonCorrect() {
    ContextValueFilter valueFilter = new ContextValueFilter () {
        public Object process(
          BeanContext context, Object object, String name, Object value) {
            if (name.equals("DATE OF BIRTH")) {
                return "NOT TO DISCLOSE";//设置value的值
            }
            if (value.equals("John")) {
                return ((String) value).toUpperCase();//转换value
            } else {
                return null;
            }
        }
    };
    String jsonOutput = JSON.toJSONString(listOfPersons, valueFilter);
}

使用 NameFilter 和 SerializeConfig

NameFilter: 序列化时修改 Key。
SerializeConfig:内部是个map容器主要功能是配置并记录每种Java类型对应的序列化类。

@Test
public void givenSerializeConfig_whenJavaObject_thanJsonCorrect() {
    NameFilter formatName = new NameFilter() {
        public String process(Object object, String name, Object value) {
            return name.toLowerCase().replace(" ", "_");
        }
    };
     
    SerializeConfig.getGlobalInstance().addFilter(Person.class,  formatName);
    String jsonOutput =
      JSON.toJSONStringWithDateFormat(listOfPersons, "yyyy-MM-dd");
}

相关文章

网友评论

      本文标题:fastjson

      本文链接:https://www.haomeiwen.com/subject/txgcohtx.html