現在主流的平臺的接口數據都已經是json格式的了。簡單介紹集中轉換的方法,都是用第三方jar包。
1. jackson.
官方網站:http://jackson.codehaus.org/ 我現在用的 jackson-all-1.9.1.jar http://pan.baidu.com/s/1gd87aGr 用法
[java] view plaincopy
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 常用的操作
[html] view plaincopy
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類,
[java] view plaincopy
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包。
[java] view plaincopy
<span style="white-space:pre"> </span> JsonParser json = new JsonParser();
JsonObject obj = (JsonObject) json.parse(content);
String orderId = obj.get("orderId").toString();
String money = obj.get("money").toString();
4.json。
需要兩個包json-smart.jarjson-lib-2.4-jdk15.jar
[java] view plaincopy
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);
}
[java] view plaincopy
String errorCode = (String) obj.get("error_code");