在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,其它情况一律不会转换(也许有遗漏的,请大家指正)