java对象Json序列化,修改Json序列化后字段名

@JSONField(name = “XXX”)

记一次第三方请求,请求参数首字母大写的解决方法。
定义一个User类

import lombok.Data;

@Data
public class User {

    private String name;

    private String sex;

    private int age;

}

实例一个user,将user JSON序列化输出:

public class UserTest {
    public static void main(String[] args) {
        User user=new User();
        user.setAge(15);
        user.setName("张三");
        user.setSex("女");
        System.out.println(JSONObject.toJSONString(user));
    }
}

结果:
在这里插入图片描述
此时,假设user是第三方请求接口参数(本例以此为例)而对方接口必须是首字母大写或者其他要求可以使用@JSONField注解,具体使用参数可以自己去了解,此处以name为例。

import lombok.Data;
import com.alibaba.fastjson.annotation.JSONField;
@Data
public class User {

    private String name;

    private String sex;

    @JSONField(name = "Age")
    private int age;

}

结果:
在这里插入图片描述
此外,@JSONField还有许多的属性,见源码:

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
public @interface JSONField {
  		int ordinal() default 0; //是根据fieldName的字母序进行序列的,你可以通过ordinal指定字段的顺序

        String name() default ""; //序列化和反序列化时候的别名

        String format() default ""; //用于字符串格式的日期转换

        boolean serialize() default true; // 是否参与序列化

        boolean deserialize() default true; //是否参与反序列化

        SerializerFeature[] serialzeFeatures() default {}; //序列化选项 SerializerFeature.WriteNullNumberAsZero 如空Number填充0

        Feature[] parseFeatures() default {}; //反序列化选项

        String label() default ""; //标签,

        boolean jsonDirect() default false; //当你有⼀个字段是json字符串的数据,你希望直接输出,⽽不是经过转义之后再输出。

        Class<?> serializeUsing() default Void.class; // 属性的序列化类,可定制。可有现存的,比如本来是Long,序列化的时候转为String:serializeUsing= ToStringSerializer.class

    	Class<?> deserializeUsing() default Void.class; // 属性的反序列化类,可定制。

    	String[] alternateNames() default {}; //参与反序列化时候的别名

        boolean unwrapped() default false; // 对象映射到父对象上。不进行子对象映射。简单而言,就是属性为对象的时候,属性对象里面的属性直接输出当做父对象的属性输出

        String defaultValue() default ""; //设置默认值
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值