1. 程式人生 > >json,string和object的轉換

json,string和object的轉換

現在主流的平臺的介面資料都已經是json格式的了。簡單介紹集中轉換的方法,都是用第三方jar包。

1.jackson.

private static ObjectMapper objectMapper = new ObjectMapper();
    static{
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        objectMapper.setDeserializationConfig(objectMapper.getDeserializationConfig().without(                  
                DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES));
    }
    /**
     * 使用物件進行json反序列化。
     * @param json json串
     * @param pojoClass 類型別 json的String型別轉換為類
     */
    public static Object decodeJson(String json, Class pojoClass) throws Exception{     
        try{
            return objectMapper.readValue(json, pojoClass);
        }catch(Exception e){
            throw e;
        }
    }


    /**
     * 將物件序列化。
     * @param o 實體物件
     * @return 序列化後json object轉String,可以轉換map等型別
     */
    public static String encodeJson(Object o) throws Exception{
        try{
            return objectMapper.writeValueAsString(o);
        }catch(Exception e){
            throw e;
        }
    }

2. FastJson 

阿里巴巴FastJson也是一個Json工具包,速度最快的包,據說測試超越其他Java Json parser,超越JackJson,支援java Bean、集合、Map、日期、Enum,支援泛型支援自省;能夠直接執行在java環境,支援Android,而且開源的。

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

public static final Object parse(String text); // 把JSON文字parse為JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文字parse成JSONObject    
public static final  T parseObject(String text, Class clazz); // 把JSON文字parse為JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文字parse成JSONArray 
public static final  List parseArray(String text, Class clazz); //把JSON文字parse成JavaBean集合 
public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文字 
public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文字 
public static final Object toJSON(Object javaObject); 將JavaBean轉換為JSONObject或者JSONArray。

我的jar包:http://pan.baidu.com/s/1dDxfK21 加一個request的解析,解析完直接轉換為java類,

private String getRequestBody(HttpServletRequest request) throws IOException {
String postBody = new String();
BufferedReader bReader = request.getReader();
        String line = null;
        while((line = bReader.readLine()) != null){
            postBody += line;
        }
return postBody;
}
pay ucReq = JSON.parseObject(postBody, pay.class);

3.Gson

google的Gson包,我的jar包。

    JsonParser json = new JsonParser();
            JsonObject obj = (JsonObject) json.parse(content);
            String orderId = obj.get("orderId").toString();
            String money = obj.get("money").toString();

4.json。

JSONParser jsonParser = new JSONParser(JSONParser.DEFAULT_PERMISSIVE_MODE);
   JSONObject obj;
   try {
       obj = (JSONObject) jsonParser.parse(jsonStr);
   } catch (ParseException e) {
       throw new QException(QException.CODE_JSON_ERROR, jsonStr);
   } catch (Exception e1) {
       throw new QException(QException.CODE_JSON_ERROR, jsonStr);
   }
   String errorCode = (String) obj.get("error_code");