笔记一:用Json-lib转换复杂对象的注意事项
Json-lib是Java下常用的Json转换包,通常情况下,我们这样转换Json字符串到Java对象:
/* Person是这样定义的
* public class Person {
* private String name;
* private int sex;
* ...
* }
*/
JSONObject jsonObj = JSONObject.fromObject(jsonStr);
Person person = (Person) JSONObject.toBean(jsonObj, Person.class);
在Person的成员都是基本数据类型和String类型时,这样转换没问题。如果Person中包含List、Array、自定义类型的成员时,转换就会出错了,例如,如果Person类这样定义:
public class Person {
private String name;
private int sex;
private List<String> experience;
...
}
这时应该像下面这样处理:
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("experience", List.class);
JSONObject jsonObj = JSONObject.fromObject(jsonStr);
Person person = (Person) JSONObject.toBean(jsonObj, Person.class, classMap);
笔记二:用HttpClient获取的Http响应中如何避免中文乱码。
在调用EntityUtils.toString方法获得响应字符串时加上编码参数,如下:
HttpEntity entity = response.getEntity();
return entity != null ? EntityUtils.toString(entity, "UTF-8") : null;
"UTF-8"是响应页面的编码,如果页面编码是GBK这里就该相应的换成GBK。
欢迎扫码关注我的微信公众号
君子爱财取之有道