bean转换成json中遇到的一些问题~
1.选用哪种框架好?
个人经验和网上数据表明,解析和转换速率
jackson>gson>json-lib
不过个人觉得jackson虽然功能强大且速度快,但是不推荐使用,感觉引入后代码比较冗余复杂。
所以本人比较推荐阿里巴巴的 fastjson,小巧易用,且迅速!
2.当需求json串中的key值首写字母为大写字母时,貌似只有fastjson有对应的解决方案!
"checksum_seg": [
{
"ACity": "SHA",
"ACityID": "2",
"ACityName": "上海",
"APort": "PVG",
"APortName": "浦东国际机场",
"ATime": "2120",
"ATimeString": "21:20",
"AirLineName": "东方航空",
"Airline": "MU",
"AirlineCode": "MU",
"CraftType": "323",
"DCity": "BJS",
"DCityID": "1",
"DCityName": "北京",
"DPort": "PEK",
"DPortName": "首都国际机场",
"DTime": "1905",
"DTimeString": "19:05",
...... }
其中ACity、ACityID中首写字母均为大写字母,在json转义,通过java反射机制,会将其手写字母默认转为大写字母,生成的json串为:
checksum_segs_List":[{"aCity":"SHA","aCityID":"2",......
问题一,是在写bean的时候,并不能按照elipse默认生成的get/set方法的方式,需要手写调整:
public String getACity() {
return ACity;
}
public void setACity(String ACity) {
this.ACity = ACity;
}
问题二,问最关键一步,网上也有人碰见这样的问题。这时需要将 该属性置为public ,这样
fastjson能读取bean的属性名称,而不会通过反射机制来自动拼装属性对应key值
public String ACity;
public String ACityID;
public String ACityName;
public String APort;
public String APortName;
......
紧接着,需要删除eclipse生成的get方法!!!