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"); 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章