最近掉别人接口,遇到一个很奇葩的问题,返回的字段里面,有可能大写,也有可能小写,举例如下
String jsonString1 = "{\"NAME\":\"张三\"}";
String jsonString2 = "{\"name\":\"张三\"}";
实体类如下
public class Student {
private String name;
}
···
需求:我现在要将上述的两个字符串,都能反序列化成下面的实体类对象里面
您是不是可以在您接收后,按您的想法用字符串方法处理成统一的大(小)写字段,您的后续就是一致的啰。
import com.alibaba.fastjson.parser.Feature;
// 设置忽略大小写
JSON.DEFAULT_PARSER_FEATURE |= Feature.IgnoreAutoType.getMask();
有两种方法
第一种 使用注解:在要序列化和反序列化的类中,可以使用@JSONField注解来指定属性的序列化和反序列化配置。
@JSONField(name = "name", alternateNames = {"name", "NAME"})
private String name;
第二种全局配置, 代码如下:
public static void main(String[] args) {
String jsonString1 = "{\"NAME\":\"张三\"}";
String jsonString2 = "{\"name\":\"张三\"}";
int feature = JSON.DEFAULT_PARSER_FEATURE;
feature |= Feature.IgnoreAutoType.getMask();
Test test = JSON.parseObject(jsonString1, Test.class, feature);
Test test2 = JSON.parseObject(jsonString2, Test.class, feature);
System.out.println(test);
System.out.println(test2);
}
如果有帮助,麻烦点一个被采纳~谢谢。
不知道你这个问题是否已经解决, 如果还没有解决的话: