fastjsonjavabean命名

使用jquery ajax请求获取了json格式的数据,获取到后一直不能按照想要处理的方式处理,本以为是前端除了问题,调试了之后发现竟然是fastjson在转换中那个属性没有转换。


上个例子看看:

import com.alibaba.fastjson.JSON;


public class JSONTest1 {
private String nM;
private String nnM;
private String GMou;
private String Gao;

public String toJson(){
return JSON.toJSONString(this);
}
public String getnM() {
return nM;
}
public void setnM(String nM) {
this.nM = nM;
}
public String getNnM() {
return nnM;
}
public void setNnM(String nnM) {
this.nnM = nnM;
}
public static void main(String[] args){
JSONTest1 jsonObject=new JSONTest1();
jsonObject.setnM("gao1");
jsonObject.setNnM("gao2");
jsonObject.setGao("gao3");
jsonObject.setGMou("gao4");
System.out.println(jsonObject.toJson());
}
public String getGMou() {
return GMou;
}
public void setGMou(String gMou) {
GMou = gMou;
}
public String getGao() {
return Gao;
}
public void setGao(String gao) {
Gao = gao;
}

}

输出是:

分析下: 为什么nM没有被输出呢?

一个Javabean对象的命名规则及解析:

如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 之后的部分(大小写维持不变)。

如果前两个字母是大写,那么该属性名直接用作 getter/setter 方法中get/set 之后的部分(大小写维持不变)。

如果首字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 之后的部分(大小写维持不变)。

其余情况下,属性名中首字母变为大写用作 getter/setter 方法中 get/set 之后的部分。

这三种情况都解决了,但是明显看到属性名:“GMou”变为了"gMou",“Gao"变为"gao",可见还是java反射的那一套,只是在寻找get、set方法中拿get/set之后是小写字母的属性就没辙了,需要注意下命名。

属性首字母小写第二个字母大写,是会被fastjson给扔掉不管的。

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...