最近用JSONObject.toJSONString()生成Json字符串时发现有一个字段的值缺失了,仔细研究后发现是因为我在父类A和子类B上都声明了一个属性c,而生成JSON字符串时,取的是子类对象的属性c,当子类属性c进行初始化的时候,JSON字符串就会出现缺失c字段的情况。
、
这个时候,我们把子类的同名属性删掉,或者把父类的同名属性的值赋值给子类,就可以正确生成对应的JSON字符串了。
public class FatherDemo {
private String id;
//已赋值的同名属性
private String name;
public FatherDemo(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class SonDemo extends FatherDemo{
private String age;
//未赋值的同名属性
// private String name;
public SonDemo(String id, String name, String age) {
super(id, name);
this.age = age;
// this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
/* @Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}*/
}
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
/**
* Created by TianLin on 2019/4/17.
*如果父类和子类有同一属性,则子类对象转成JSON字符串时,取的是子类对象的该属性值
*/
public class JsonObjectTest {
@Test
public void test(){
SonDemo sonDemo = new SonDemo("1","张三","28");
System.out.println(JSONObject.toJSONString(sonDemo));
}
}