java中json转对象_Java开发中json使用,各对象与json相互转换

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控制台打印结果如下:

cf41e386cc5bd83a78b03e8948f8908d.png

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;

}

}

本文不定期更新


版权声明:本文为weixin_28725959原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。