Json字符串与Object对象相互转换的几种方式
Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型
只列举了最省事的方式。不涉及复制情况和速度。
测试用例,一个User类,属性name,age,location。重写toString()。
public class User {
private String name;
private Integer age;
private String location;
public User() {
}
public User(String name) {
this.name = name;
}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public User(String name, Integer age, String location) {
this.name = name;
this.age = age;
this.location = location;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", location='" + location + '\'' +
'}';
}
}
1、Json-Lib
maven依赖如下,需注意<classifier>jdk15</classifier>,jar包区分jdk1.3和jdk1.5版本
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
测试demo
import net.sf.json.JSONObject;
public class JsonLibDemo {
public static void main(String[] args) {
//创建测试object
User user = new User("李宁",24,"北京");
System.out.println(user);
//转成json字符串
JSONObject jsonObject = JSONObject.fromObject(user);
String json = jsonObject.toString();
System.out.println(json);
//json字符串转成对象
JSONObject jsonObject1 = JSONObject.fromObject(json);
User user1 = (User) JSONObject.toBean(jsonObject1,User.class);
System.out.println(user1);
}
}
2、org.json
maven依赖如下
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
测试demo
import org.json.JSONObject;
public class OrgJsonDemo {
public static void main(String[] args) {
//创建测试object
User user = new User("李宁",24,"北京");
System.out.println(user);
//转成json字符串
String json = new JSONObject(user).toString();
System.out.println(json);
//json字符串转成对象
JSONObject jsonObject = new JSONObject(json);
String name = jsonObject.getString("name");
Integer age = jsonObject.getInt("age");
String location = jsonObject.getString("location");
User user1 = new User(name,age,location);
System.out.println(user1);
}
3、Jackson
maven依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
测试demo
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDemo {
public static void main(String[] args) {
//创建测试object
User user = new User("李宁",24,"北京");
System.out.println(user);
//转成json字符串
ObjectMapper mapper = new ObjectMapper();
try {
String json = mapper.writeValueAsString(user);
System.out.println(json);
//json字符串转成对象
User user1 = mapper.readValue(json,User.class);
System.out.println(user1);
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
4、Gson
maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
测试demo
import com.google.gson.Gson;
public class GsonDemo {
public static void main(String[] args) {
//创建测试object
User user = new User("李宁",24,"北京");
System.out.println(user);
//转成json字符串
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json);
//json字符串转成对象
User user1 = gson.fromJson(json,User.class);
System.out.println(user1);
}
}
5、FastJson
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.37</version>
</dependency>
测试demo
import com.alibaba.fastjson.JSON;
public class FastJsonDemo {
public static void main(String[] args) {
//创建测试object
User user = new User("李宁",24,"北京");
System.out.println(user);
//转成json字符串
String json = JSON.toJSON(user).toString();
System.out.println(json);
//json字符串转成对象
User user1 = JSON.parseObject(json,User.class);
System.out.println(user1);
}
}
json-lib时间有些久远,jar包只更新到2010年
org.json用起来有些繁琐
Jackson、Gson、FastJson只需一两句话就可以搞定
相关文章
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIMEDATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
- 工作总结 返回 json 后台对象中,某一个字段设为string 整个对象转换为json 返回到页面中
- Word控件Spire.Doc 转换教程(十六):在 C# 中将 Word 转换为 PDF/A
- javaScript数组和对象相互转换
- Linux有问必答:Perl中本地时间和UNIX时间戳间相互转换
- jdk1.6——JAXB转换对象和xml
- js对象键值对转换为数组包对象
- 你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案
- C#中JSON和对象之间互相转换功能示例
- 【Java】DTO对象转换
- JSON对象和字符串之间的相互转换
- 将Json数据转换为ADO.NET DataSet对象
- JS代码把JSON字符串转换为对象,计算对象的长度并把它转换为数字类型,把转换的值相加减
- DataURL与File,Blob,canvas对象之间的互相转换的Javascript (未完)
- 2016年企业转换云业务主要考虑的五大因素
- jqGrid时间转换
- 浅析Object.entries()方法的使用及解决使用for of或for in遍历对象的问题和普通对象与Map对象互相转换的问题
- 浅析Java中类型转换:String 与 int、long、Interger、char 互相转换/Java对象与Json字符串间的相互转换
- 使用fastjson将对象和字符串进行转换
- 关于转换大小写函数
- dd 转换和拷贝复制文件
- 【数电】(一) 进制转换编码 原码,反码,补码
- ES6中的数据转换(JSON、Map、String)【转】
- CAD软件中如何转换尺寸标注对象?
- vue 将图片流转换为 base64 的图片 src
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换