一、首先我们来看一下正常的反序列化的用法,我们有一个Person类:
1、Person类:
@Data
class Person{
String name;
int age;
}
下面通过一个字符串反序列化成一个java对象;
public class Test {
public static void main(String[] args) {
String str = "{\n" +
"\t\"name\" :\"ck\",\n" +
"\t\"age\":15\n" +
"}";
Person person = JSONObject.parseObject(str, Person.class);
System.out.println(person);
}
}
输出结果为:
但是加入说你这个要序列化的字符串是别人给你的,是这样的格式:
String str = "{\n" +
"\t\"name12\" :\"ck\",\n" +
"\t\"age\":15\n" +
"}";
那么你肯定不能指望反序列化的对象name属性还是等于ck,事实证明它是null,假入说你不想改变你的bean的属性名称又想将name12的值反序列化给name,那么怎么办呢?这时候你就可以用@JSONField注解了,具体如下:
@Data
class Person{
@JSONField(name = "name12")
String name;
int age;
}
如果你不想用上面注解的方式,那么你可以改写set方法,像下面这样也是可以实现的:
@Data
class Person{
String name;
int age;
public void setName12(String name){
this.name = name;
}
}
完结!!!!
本文介绍了如何使用fastjson在字段名与JSON字符串中的key不一致时进行反序列化。通过@JSONField注解或者改写set方法,可以将JSON中的"name12"值正确赋给bean的"name"属性,保持bean结构不变。

2224

被折叠的 条评论
为什么被折叠?



