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/