Json:一种网络通信使用的数据格式,因为便于解析,比较流行,对象可以转为json,同样json也可以转对象。
下面介绍下Json工具的简单使用(fastjson && jackson)。
FastJson
阿里的json数据解析工具包,国内比较流行,用的较多。
对象转json字符串
JSON.toJSONString(user);
对象转json对象
(JSONObject)JSON.toJSON(user);
json字符串转对象
JSON.parseObject(jsonString, User.class);
json对象转对象
User javaObject = JSON.toJavaObject(jsonObject, User.class);
list 转 json
String jsonString =JSON.toJSONString(users);
json 转 list
List parseArray = JSON.parseArray(jsonString, User.class);
完整示例代码(需要引入fastjson的jar包):
package test;//JsonTest.java 文件所在位置:test包
importjava.util.ArrayList;importjava.util.List;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;public classJsonTest {//User 类
static classUser{privateInteger age;privateString name;publicInteger getAge() {returnage;
}public voidsetAge(Integer age) {this.age =age;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}
@OverridepublicString toString() {return "User [age=" + age + ", name=" + name + "]";
}
}public static voidmain(String[] args) {//new 一个User对象
User user = newUser();
user.setAge(1);
user.setName("xiaojun");//对象转json字符串
String jsonString =JSON.toJSONString(user);
System.out.println("对象转json字符串:\t" +jsonString);//对象转json对象
user.setAge(2);
JSONObject jsonObject=(JSONObject)JSON.toJSON(user);
System.out.println("对象转json:\t" +jsonObject);//json字符串转对象
User parseObject = JSON.parseObject(jsonString, User.class);
System.out.println("json字符串转对象:\t" +parseObject);//json对象转对象
User javaObject = JSON.toJavaObject(jsonObject, User.class);
System.out.println("json对象转对象:\t" +javaObject);
User user2= newUser();
user2.setAge(9);
user2.setName("xiaochen");
ArrayList users = new ArrayList<>();
users.add(user2);
users.add(user);
System.out.println("list 转json============\t");
System.out.println("准备转json的list:\t" +users);//list 转json
String jsonString2 =JSON.toJSONString(users);
System.out.println("list转json:\t" +jsonString2);//json 转list
List parseArray = JSON.parseArray(jsonString2, User.class);
System.out.println("json转list:\t" +parseArray);
}
}
执行main方法Console控制台打印结果如下:
Jackson
与FastJson一样,Jackson 应该比fastjson 出现更早,api用法有些不一样,但是使用效果差不多
使用jackson编写的json工具类,JsonUtil:
importjava.util.List;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.JavaType;importcom.fasterxml.jackson.databind.ObjectMapper;/****/
public classJsonUtil {//定义jackson对象
private static final ObjectMapper MAPPER = newObjectMapper();/*** 将对象转换成json字符串。
*
Title: pojoToJson
*
Description:
*@paramdata
*@return
*/
public staticString objectToJson(Object data) {try{
String string=MAPPER.writeValueAsString(data);returnstring;
}catch(JsonProcessingException e) {
e.printStackTrace();
}return null;
}/*** 将json结果集转化为对象
*
*@paramjsonData json数据
*@paramclazz 对象中的object类型
*@return
*/
public static T jsonToPojo(String jsonData, ClassbeanType) {try{
T t=MAPPER.readValue(jsonData, beanType);returnt;
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** 将json数据转换成pojo对象list
*
Title: jsonToList
*
Description:
*@paramjsonData
*@parambeanType
*@return
*/
public static List jsonToList(String jsonData, ClassbeanType) {
JavaType javaType= MAPPER.getTypeFactory().constructParametricType(List.class, beanType);try{
List list =MAPPER.readValue(jsonData, javaType);returnlist;
}catch(Exception e) {
e.printStackTrace();
}return null;
}
}
本文不定期更新