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:

 public class TestOrgJson {

     public static void beanToJSONObject(){
User user = new User(11,"wangwu","wangwu@163.com","上海"); JSONObject jsonObject = new JSONObject(user); System.out.println(jsonObject);
} public static void mapToJSONObject(){ Map<String,Object> map = new HashMap();
map.put("name","zhangsan");
map.put("age","15"); JSONObject jsonObject = new JSONObject();
jsonObject.toMap();
} public static void main(String []args){ }
}

JSONObject、 JsonObject、阿里fastJson、谷歌gson区别的更多相关文章

  1. java fastjson:Map与json以及JSONObject ,JSONObject与String互转

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson ...

  2. json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)

    一 使用json-lib包下的JSONObject和JSONArray转换 代码如下: package com.test.test; import java.util.ArrayList; impor ...

  3. Fastjson和Gson零碎总结

    一:用于测试的类 User类 import lombok.Data; import lombok.experimental.Accessors; /** * @author silentdoer * ...

  4. FastJson和Gson和Json数据解析分析和用法

    首先分析下目前号称最快的FastJson,这个是所有人都验证过的,解析速度确实比较快,不过也需要根据数据量来看,数据量小的时候,Gson性能要稍微优于FastJson,但在数据量大解析的情况下,Fas ...

  5. 阿里fastjson工具类

    package com.common.utils.jsonUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JS ...

  6. 阿里Fastjson的使用

    Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...

  7. 阿里fastjson解析

    解析案例 String object="{total=1, rows=[{_Account=3646808, UserID=131514, Mt4Name=SewwoaIQQS, Serve ...

  8. FastJSON、Gson和Jackson性能对比

    Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.本文将测试这三个类库在JSON序列化和反序列化的方面表现,主要测试JSON序列化和反序列化的速度.为了防止由于内 ...

  9. FastJSON、Gson、Jackson(简单了解使用)

    下载地址(maven) Jackson:http://mvnrepository.com/search?q=jackson FastJson:http://mvnrepository.com/sear ...

随机推荐

  1. 可以使用的一些API(转存)

    聚合数据 juhe.com 转存的格式不如原文的好看,可以直接访问原文 https://www.jianshu.com/p/9a0acf69b789 api接口应该会越来越火,上个全的,楼主自己找找吧 ...

  2. 记录一下自己搭建springboot+mybatis+druid 多数据源的过程

    前言  上次的一个项目(springboot+mybatis+vue),做到后面的时间发现需要用到多数据源.当时没有思路..后来直接用了jdbc来实现.这几天不是很忙,所以决定自己再搭建一次.不多说, ...

  3. Java出现NoSuchElementException异常

    参考网址:https://blog.csdn.net/xiao_ma_csdn/article/details/78906650 出现这个异常是线程访问越界,这个时候就要检查下到底是哪里越界. 原因是 ...

  4. 阻塞式I/0 和 非阻塞式I/O 同步异步详细介绍

    请求描述: `阻塞/非阻塞` 和 `同步/异步` 不是一个概念.举几个简单的例子. 当进程调用一个进行IO操作的API时(比如read函数),在数据没有到达前,read 会挂起,进程会卡住.在数据读取 ...

  5. blog主题——田野(1)

    贮存一下,blog代码 QAQ 页首html <link rel='stylesheet' href='https://blog-static.cnblogs.com/files/elkyo/c ...

  6. jq的 on 事件委托 导致多次执行问题

    解除 这个元素 在 父级上的 click 事件委托$(msg.fatherDiv).off('click','.fangdaimg_fn2'); click事件$('.fangdaimg_fn2'). ...

  7. JEECG笔记

    一.修改默认主题 找到SysThemesEnum.java类,路径为:\src\org\jeecgframework\core\enums\SysThemesEnum.java,在toEnum(Str ...

  8. Nodejs的Gruntjs使用一则

    Gruntjs是前端项目构建工具,基于nodejs命令.有些js项目是基于Gruntjs构建的,如Jquery. Gruntjs主要功能有: 1.合并文件. 2.压缩html,js,css,图片文件. ...

  9. 粪发涂墙-java1

    相信很多人和笔者一样,经常会做一些数组的初始化工作,也肯定会经常用到集合类.假如我现在要初始化一个String类型的数组,可以很方便的使用如下代码: String [] strs = {"T ...

  10. 去除移动端苹果手机(ios)的input默认样式与input禁止键盘出现的方式

    样式: input{-webkit-appearance: none;} 在iPhone plus点击input框出生日期时会出现如下图: 为了去掉下面那条苹果自带的,可以这样处理:在HTML中的in ...