FASTJSON转换JAVA对象规则研究分析

在JAVA对象转换JSON字符串时,FASTJSON是如何工作的,那些成员变量和方法会被转换成JSON字符串

1,先看代码

public class JsonTEST {
	public String a="公共变量";
	private String b="私有变量(无GET)";
	private String c="私有变量(有公共GET)";
	public String getC() {
		return this.c;
	}
	public String getD() {
		return "公共方法(get命名)(无对应公共变量)";
	}
	private String getE() {
		return "私有方法(get命名)(无对应公共变量)";
	}
	public String fF() {
		return "公共方法(普通命名)";
	}
	private String gG() {
		return "私有方法(普通命名)";
	}
	public String h="公共变量";
	public String getH() {
		return "公共方法(get命名)(有对应公共变量)";
	}
	public String getx() {
		return "公共方法(get命名全小写)(无对应公共变量)";
	}
	public String getxX() {
		return "公共方法(get命名第二个字母大写)(无对应公共变量)";
	}
	public String getxxXxxx() {
		return "公共方法(get命名第三个字母大写)(无对应公共变量)";
	}
	public static void main(String[] args) {
		System.out.println(JSON.toJSONString(new JsonTEST()));
	}
}

2,输出

{"a":"公共变量","c":"私有变量(有公共GET)","d":"公共方法(get命名)(无对应公共变量)","h":"公共方法(get命名)(有对应公共变量)","xX":"公共方法(get命名第二个字母大写)(无对应公共变量)"}

3,结论:

1,公共变量一定转换,key就是公共变量的名字

2,公共方法只有带返回值并且get开头并且get后面2位字符里有大写字母的会被转换,key为第一个字母小写

3,如果同时满足1,2且最后的key是一样的,优先使用方法的值

4,其它情况一律不会转换(也许有遗漏的,请大家指正)

猜你喜欢

转载自blog.csdn.net/icemaker88/article/details/79930763