[转载]JSONObject、 JsonObject、阿里fastJson、谷歌gson区别
文章转载自:https://www.cnblogs.com/bytecodebuffer/p/11572472.html
JSONObject、 JsonObject、阿里fastJson、谷歌gson区别
JSON:JavaScript Object Notation Java对象表示法
Java中并没有内置的 JSON 解析,需要使用第三方类库。常用的类库如下
一、Gson : 古河开发的JSON 库
二、FastJson :阿里巴巴的JSON 库
三、JackSon : 社区十分活跃
JSONObject 是json 对象,一个键对应一个值,例如: {“key”:"value"}
一、com.alibaba.fastjson.JsonObject(参考)
1.添加fastJson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
2.将 List 对象转换为 Json 格式的String
List<User> users= findAllUser();
String str = JSONObject.toJSONString(users);
3.将 Map 对象转换为 JsonObject
Map<String,Object> map = new HashMap();
map.put("name","zhangsan");
map.put("age","15");
JSONObject jsonObject = new JSONObject(map);
4.将Map 转换为 Json 格式的String 字符串
String jsonStr = JSON.toJSONString(map);
5.将 json 格式的String 字符串转换为 Map
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
Map<String,Object> map = jsonObject;
6. 将 json 格式的字符串转换为 JsonObject
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
7. 将 json字符串转换为 Java对象
String jsonStr = "{\"name\":\"zhangsan\",\"email\":\"15\"}";
User user = JSON.parseObject(jsonStr,User.class);
8. 将 json 字符串转换为 JSONArray 数组
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
JSONArray array = JSON.parseArray(jsonStr);
for(int i=0;i<array.size();i++){
System.out.println(array.get(i));
}
9. 将Java 对象转换为 json 字符串
User user = new User(11,"wangwu","wangwu@163.com","上海");
String str = JSON.toJSONString(user);
10. 将json 字符串转换为 Java 实体集合
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
List<User> list = JSON.parseArray(jsonStr,User.class);
11. 将 java 对象转换为 JsonObject
User user = new User(11,"wangwu","wangwu@163.com","上海");
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
二、org.json.JSONObject
1.添加依赖
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
2.Bean 对象转换为 JSONObject
User user = new User(11,"wangwu","wangwu@163.com","上海");
JSONObject jsonObject = new JSONObject(user);
3.Map 集合转换为 JSONObject 对象
Map<String,Object> map = new HashMap();
map.put("name","zhangsan");
map.put("age","15");
JSONObject jsonObject = new JSONObject(map);
4.JSONObject 转换为 Map<String,Object>对象
JSONObject jsonObject = new JSONObject();
jsonObject.toMap();
三、GSON(参考)
1.添加依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
2.Gson 的两个基础方法
toJson();
fromJson();
3.创建方式一:
// 使用new方法
Gson gson = new Gson();
// toJson 将bean对象转换为json字符串
String jsonStr = gson.toJson(user, User.class);
// fromJson 将json字符串转为bean对象
Student user= gson.fromJson(jsonStr, User.class);
// **序列化List**
String jsonStr2 = gson.toJson(list);
// **反序列化成List时需要使用到TypeToken getType()**
List<User> retList = gson.fromJson(jsonStr2,new TypeToken<List<User>>(){}.getType());
创建方式二:
//serializeNulls()是GsonBuilder提供的一种配置,当字段值为空或null时,依然对该字段进行转换
Gson gson = new GsonBuilder().serializeNulls().create();
使用GsonBuilder创建Gson实例的步骤:
首先创建GsonBuilder,然后调用GsonBuilder提供的各种配置方法进行配置,最后调用GsonBuilder的create方法,将基于当前的配置创建一个Gson实例。
附录00:
package entity;
/**
* Created by baizhuang on 2019/9/23 16:29.
*/
public class User {
private int id;
private String name;
private String email;
private String address;
public User() {
}
public User(int id, String name, String email, String address) {
this.id = id;
this.name = name;
this.email = email;
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
附录01:
package entity;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by baizhuang on 2019/9/23 16:30.
*/
public class Test {
public static List<User> findAllUser(){
return Arrays.asList(
new User(1,"zhangsan","zhang","北京"),
new User(2,"lisi","li","上海"));
}
public static void listToJsonString(){
List<User> users= findAllUser();
System.out.println(users);
String str = JSONObject.toJSONString(users);
System.out.println(str);
}
public static void maptoJsonObject(){
Map<String,Object> map = new HashMap();
map.put("name","zhangsan");
map.put("age","15");
JSONObject jsonObject = new JSONObject(map);
System.out.printf("Json:"+jsonObject);
String jsonStr = JSON.toJSONString(map);
System.out.println(jsonStr);
}
public static void stringToMap(){
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
Map<String,Object> map = jsonObject;
}
public static void jsonToJsonObject(){
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println(jsonObject);
}
public static void jsonStrToJsonBean(){
String jsonStr = "{\"name\":\"zhangsan\",\"email\":\"15\"}";
User user = JSON.parseObject(jsonStr,User.class);
System.out.println(user);
}
public static void jsonStrToJsonArray(){
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
JSONArray array = JSON.parseArray(jsonStr);
for(int i=0;i<array.size();i++){
System.out.println(array.get(i));
}
}
public static void javaBeanToJsonStr(){
User user = new User(11,"wangwu","wangwu@163.com","上海");
String str = JSON.toJSONString(user);
System.out.println(str);
}
public static void jsonStrToBeanList(){
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
List<User> list = JSON.parseArray(jsonStr,User.class);
for(User user : list){
System.out.println(user);
}
}
public static void beanToJsonObject(){
User user = new User(11,"wangwu","wangwu@163.com","上海");
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
System.out.println(jsonObject);
}
public static void main(String []args){
//listToJsonString();
//();
// stringToMap();
// jsonToJsonObject();
// jsonStrToJsonBean();
//jsonStrToJsonArray();
// javaBeanToJsonStr();
//jsonStrToBeanList();
beanToJsonObject();
}
}
附录02:
package entity;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by baizhuang on 2019/9/23 16:30.
*/
public class Test {
public static List<User> findAllUser(){
return Arrays.asList(
new User(1,"zhangsan","zhang","北京"),
new User(2,"lisi","li","上海"));
}
public static void listToJsonString(){
List<User> users= findAllUser();
System.out.println(users);
String str = JSONObject.toJSONString(users);
System.out.println(str);
}
public static void maptoJsonObject(){
Map<String,Object> map = new HashMap();
map.put("name","zhangsan");
map.put("age","15");
JSONObject jsonObject = new JSONObject(map);
System.out.printf("Json:"+jsonObject);
String jsonStr = JSON.toJSONString(map);
System.out.println(jsonStr);
}
public static void stringToMap(){
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
Map<String,Object> map = jsonObject;
}
public static void jsonToJsonObject(){
String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"15\"}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println(jsonObject);
}
public static void jsonStrToJsonBean(){
String jsonStr = "{\"name\":\"zhangsan\",\"email\":\"15\"}";
User user = JSON.parseObject(jsonStr,User.class);
System.out.println(user);
}
public static void jsonStrToJsonArray(){
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
JSONArray array = JSON.parseArray(jsonStr);
for(int i=0;i<array.size();i++){
System.out.println(array.get(i));
}
}
public static void javaBeanToJsonStr(){
User user = new User(11,"wangwu","wangwu@163.com","上海");
String str = JSON.toJSONString(user);
System.out.println(str);
}
public static void jsonStrToBeanList(){
String jsonStr = "[{\"name\":\"zhangsan\",\"email\":\"zhangsan@qq.com\"},{\"name\":\"lisi\",\"email\":\"lisi@163.com\"}]";
List<User> list = JSON.parseArray(jsonStr,User.class);
for(User user : list){
System.out.println(user);
}
}
public static void beanToJsonObject(){
User user = new User(11,"wangwu","wangwu@163.com","上海");
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
System.out.println(jsonObject);
}
public static void main(String []args){
//listToJsonString();
//();
// stringToMap();
// jsonToJsonObject();
// jsonStrToJsonBean();
//jsonStrToJsonArray();
// javaBeanToJsonStr();
//jsonStrToBeanList();
beanToJsonObject();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~