一个java对象的属性是私有的,而且没有提供public的get和set方法,可以用反射的方式将其转成json吗?

public class Person implements Serializable{
private static final long serialVersionUID = 1L;
private int age;
private String name;}

public static void main(String[] args) throws Exception {
Person p=new Person();
ObjectMapper mapper=new ObjectMapper();
String s = mapper.writeValueAsString(p);
System.out.println(s);
}
想用反射的方式实现序列化,求解答。

如果提供了get和set方法是可以实现的,因为变量是私有的,只能通过外部公用方法去访问这些变量,如果没有这些方法就只能通过本类访问,其他类没有办法访问追问

谢谢你的回答,我现在初学,反射的方法会的不是很多,没有办法通过反射的方式实现吗?

追答

反射需要get和set

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-25
可以通过反射直接设置或读取私有成员,int age = Person.class.getField("age").get(p);或者int age=p.getClass().getField("age").get(p);
相似回答