开发笔记两则

笔记一:用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。


欢迎扫码关注我的微信公众号


开发笔记两则_第1张图片


君子爱财取之有道


你可能感兴趣的:(java,httpclient,json,中文乱码,复杂对象)