json,string和object的转换

现在主流的平台的接口数据都已经是json格式的了。简单介绍集中转换的方法,都是用第三方jar包。

1. jackson.

官方网站:http://jackson.codehaus.org/    我现在用的 jackson-all-1.9.1.jar  http://pan.baidu.com/s/1gd87aGr 用法


[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. private static ObjectMapper objectMapper = new ObjectMapper();  

  2.     static{  

  3.         objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));  

  4.         objectMapper.setDeserializationConfig(objectMapper.getDeserializationConfig().without(                    

  5.                 DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES));  

  6.     }  

  7.     /** 

  8.      * 使用对象进行json反序列化。 

  9.      * @param json json串 

  10.      * @param pojoClass 类类型 json的String类型转换为类 

  11.      */  

  12.     public static Object decodeJson(String json, Class pojoClass) throws Exception{       

  13.         try{  

  14.             return objectMapper.readValue(json, pojoClass);  

  15.         }catch(Exception e){  

  16.             throw e;  

  17.         }  

  18.     }  

  19.   

  20.   

  21.     /** 

  22.      * 将对象序列化。 

  23.      * @param o 实体对象 

  24.      * @return 序列化后json object转String,可以转换map等类型 

  25.      */  

  26.     public static String encodeJson(Object o) throws Exception{  

  27.         try{  

  28.             return objectMapper.writeValueAsString(o);  

  29.         }catch(Exception e){  

  30.             throw e;  

  31.         }  

  32.     }  

2. FastJson 

阿里巴巴FastJson也是一个Json工具包,速度最快的包,据说测试超越其他Java Json parser,超越JackJson,支持java Bean、集合、Map、日期、Enum,支持泛型支持自省;能够直接运行在java环境,支持Android,而且开源的。

API入口类是com.alibaba.fastjson.JSON 常用的操作

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray   

  2. public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject      

  3. public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean   

  4. public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray   

  5. public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合   

  6. public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本   

  7. public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本   

  8. public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。  



我的jar包:http://pan.baidu.com/s/1dDxfK21 加一个request的解析,解析完直接转换为java类,

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. private String getRequestBody(HttpServletRequest request) throws IOException {  

  2. String postBody = new String();  

  3. BufferedReader bReader = request.getReader();  

  4.         String line = null;  

  5.         while((line = bReader.readLine()) != null){  

  6.             postBody += line;  

  7.         }  

  8. return postBody;  

  9. }  

  10. pay ucReq = JSON.parseObject(postBody, pay.class);  



3.Gson

google的Gson包,我的jar包。

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <span style="white-space:pre">  </span>    JsonParser json = new JsonParser();  

  2.             JsonObject obj = (JsonObject) json.parse(content);  

  3.             String orderId = obj.get("orderId").toString();  

  4.             String money = obj.get("money").toString();  



4.json。

需要两个包json-smart.jarjson-lib-2.4-jdk15.jar

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. JSONParser jsonParser = new JSONParser(JSONParser.DEFAULT_PERMISSIVE_MODE);  

  2.    JSONObject obj;  

  3.    try {  

  4.        obj = (JSONObject) jsonParser.parse(jsonStr);  

  5.    } catch (ParseException e) {  

  6.        throw new QException(QException.CODE_JSON_ERROR, jsonStr);  

  7.    } catch (Exception e1) {  

  8.        throw new QException(QException.CODE_JSON_ERROR, jsonStr);  

  9.    }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. String errorCode = (String) obj.get("error_code"); 


你可能感兴趣的:(Jackson)