使用FastJson时字段大小写转换

这里记录一下工作时踩得坑,关于使用FastJson时字段大小写转换的问题。
当前有个实体类TestFastJson如下

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestFastJson{
   
    private String name;

    private String info;
}

测试类里面把这个类转成FastJson然后打印出来

@Test
void testFastJson(){
	TestFastJson testClass = new TestFastJson("zhang", "some information");
	Object json = JSONObject.toJSON(testClass);
	System.out.println(json);
}

打印结果如下,这没什么好说的
在这里插入图片描述
但是如果实体类字段是大写的,比如把info字段改成Info

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestFastJson{
   
    private String name;

    private String Info;
}

这时候打印结果依然是和上面一样的。
问题的原因这里不细究,这里只给出解决方法,实体类加注解

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestFastJson {
   
    private String name;

    @JSONField(name = "Info")
    private String info;
}

这样打印结果就对了
在这里插入图片描述
注意,这里用了Lombok所以注解直接加在字段上就行了。但是如果是自己手写的get、set方法,这个注解需要加到get方法上才生效。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
fastjson2 是一个Java语言编写的JSON解析库,可以实现JSON字符串与Java对象之间的相互转换。在fastjson2中,反序列化大小写是指在将JSON字符串转换为Java对象,对于属性名的大小写敏感性。 在默认情况下,fastjson2是大小写敏感的,即JSON字符串中的属性名必须与Java对象中的属性名完全匹配,包括大小写。如果属性名大小写不匹配,fastjson2会无法正确地将JSON字符串转换为Java对象。 而,fastjson2也提供了一些配置选项来实现反序列化大小写不敏感的功能。可以通过以下两种方式来实现: 1. 使用@JSONField注解:可以在Java对象的属性上使用@JSONField注解,并设置name属性来指定对应的JSON属性名。通过设置name属性为大小写不敏感的值,可以实现反序列化大小写不敏感的效果。 示例代码如下: ```java public class User { @JSONField(name = "username") private String userName; // getter and setter } ``` 2. 使用ParserConfig配置:可以通过ParserConfig类来配置fastjson2的解析器,设置属性名的大小写敏感性。可以使用ParserConfig.getGlobalInstance()方法获取全局的ParserConfig实例,并调用setFieldBased()方法设置属性名大小写不敏感。 示例代码如下: ```java ParserConfig config = ParserConfig.getGlobalInstance(); config.setFieldBased(true); ``` 通过以上两种方式,可以实现fastjson2反序列化大小写不敏感的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值