Java实现Json字符串与Object对象相互转换的方式总结
本文实例总结了Java实现Json字符串与Object对象相互转换的方式。分享给大家供大家参考,具体如下:
Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型
只列举了最省事的方式。不涉及复制情况和速度。
测试用例,一个User类,属性name,age,location。重写toString()。
publicclassUser{
privateStringname;
privateIntegerage;
privateStringlocation;
publicUser(){
}
publicUser(Stringname){
this.name=name;
}
publicUser(Stringname,Integerage){
this.name=name;
this.age=age;
}
publicUser(Stringname,Integerage,Stringlocation){
this.name=name;
this.age=age;
this.location=location;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicIntegergetAge(){
returnage;
}
publicvoidsetAge(Integerage){
this.age=age;
}
publicStringgetLocation(){
returnlocation;
}
publicvoidsetLocation(Stringlocation){
this.location=location;
}
@Override
publicStringtoString(){
return"User{"+
"name='"+name+'\''+
",age="+age+
",location='"+location+'\''+
'}';
}
}
1、Json-Lib
maven依赖如下,需注意
net.sf.json-lib json-lib 2.4 jdk15
测试demo
importnet.sf.json.JSONObject;
publicclassJsonLibDemo{
publicstaticvoidmain(String[]args){
//创建测试object
Useruser=newUser("李宁",24,"北京");
System.out.println(user);
//转成json字符串
JSONObjectjsonObject=JSONObject.fromObject(user);
Stringjson=jsonObject.toString();
System.out.println(json);
//json字符串转成对象
JSONObjectjsonObject1=JSONObject.fromObject(json);
Useruser1=(User)JSONObject.toBean(jsonObject1,User.class);
System.out.println(user1);
}
}
2、org.json
maven依赖如下
org.json json 20170516
测试demo
importorg.json.JSONObject;
publicclassOrgJsonDemo{
publicstaticvoidmain(String[]args){
//创建测试object
Useruser=newUser("李宁",24,"北京");
System.out.println(user);
//转成json字符串
Stringjson=newJSONObject(user).toString();
System.out.println(json);
//json字符串转成对象
JSONObjectjsonObject=newJSONObject(json);
Stringname=jsonObject.getString("name");
Integerage=jsonObject.getInt("age");
Stringlocation=jsonObject.getString("location");
Useruser1=newUser(name,age,location);
System.out.println(user1);
}
}
3、Jackson
maven依赖
com.fasterxml.jackson.core jackson-databind 2.9.0
测试demo
importcom.fasterxml.jackson.databind.ObjectMapper;
publicclassJacksonDemo{
publicstaticvoidmain(String[]args){
//创建测试object
Useruser=newUser("李宁",24,"北京");
System.out.println(user);
//转成json字符串
ObjectMappermapper=newObjectMapper();
try{
Stringjson=mapper.writeValueAsString(user);
System.out.println(json);
//json字符串转成对象
Useruser1=mapper.readValue(json,User.class);
System.out.println(user1);
}catch(java.io.IOExceptione){
e.printStackTrace();
}
}
}
4、Gson
maven依赖
com.google.code.gson gson 2.8.1
测试demo
importcom.google.gson.Gson;
publicclassGsonDemo{
publicstaticvoidmain(String[]args){
//创建测试object
Useruser=newUser("李宁",24,"北京");
System.out.println(user);
//转成json字符串
Gsongson=newGson();
Stringjson=gson.toJson(user);
System.out.println(json);
//json字符串转成对象
Useruser1=gson.fromJson(json,User.class);
System.out.println(user1);
}
}
5、FastJson
maven依赖
com.alibaba fastjson 1.2.37
测试demo
importcom.alibaba.fastjson.JSON;
publicclassFastJsonDemo{
publicstaticvoidmain(String[]args){
//创建测试object
Useruser=newUser("李宁",24,"北京");
System.out.println(user);
//转成json字符串
Stringjson=JSON.toJSON(user).toString();
System.out.println(json);
//json字符串转成对象
Useruser1=JSON.parseObject(json,User.class);
System.out.println(user1);
}
}
json-lib时间有些久远,jar包只更新到2010年
org.json用起来有些繁琐
Jackson、Gson、FastJson只需一两句话就可以搞定
PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线
JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat
在线XML/