概要

json是前后台交互常用的数据格式,在java后台中经常需要实现java bean、list和json字符串的相互转化,故简单介绍不同框架的使用,提供简单工具类。

在Java中,常见的json框架有:Jackson(springboot默认)、fastjson(阿里开源)、Gson(谷歌开源)。网络有它们的性能对比研究,此处不做讨论,根据自己习惯来选择即可。

json的数据结构包括:{}、[],等同于java的对象、数组。两者相互组合,就能够表达很复杂的数据结构了。

使用

Fastjon

  1. 添加Maven依赖,可从https://github.com/alibaba/fastjson获取。
     <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.61</version></dependency>
  1. 使用示例,主要对象是 JSON、JSONArray、JSONObject
public void fastJsonTest() {//数据示例List list = Arrays.asList("Banana","apple","Orange");String obj = "{\"id\":1001,\"age\":12}";Person p  = new Person(1001,12,"David");//java对象 ==> json字符串,json对象String str = JSON.toJSONString(p);JSONObject jsonObj1 = (JSONObject) JSON.toJSON(p);//json字符串 ==> json对象、Java对象Person p1 = JSON.parseObject(obj, Person.class);JSONObject jsonObj2 = JSON.parseObject(obj);//json对象 ==> java对象Person p2 = JSON.toJavaObject(jsonObj2, Person.class);//数组处理JSONArray json = (JSONArray)JSON.toJSON(list);String jsonStr = String.valueOf(JSON.toJSON(json));}
  1. 官方教程 https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

Jackson

  1. 添加Maven依赖,SpringBoot中默认引入,无需额外操作。包括三个jar包:jackson-databind、jackson-core、jackson-annotations
  2. 使用示例,注意异常处理
 public void jacksonDemo() throws IOException {//数据示例User user = new User("001","David","xxx",12);Map<String,Object> map = new HashMap<String,Object>();map.put("A1", user);map.put("A2", new ArrayList<String>());//创建ObjectMapper对象ObjectMapper mapper = new ObjectMapper();//Java对象 ==> json字符串String jsonStr1 = mapper.writeValueAsString(user);String jsonStr2 = mapper.writeValueAsString(map);//json字符串 ==> Java对象User u = mapper.readValue(jsonStr1, User.class);Map m = mapper.readValue(jsonStr2, Map.class);}

Gson

  1. 添加Maven依赖,可从 https://github.com/google/gson获取

    <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.7</version>
    </dependency>
  2. 使用示例

      public void gsonDemo() {//示例数据User user = new User("kevin",22,new Date(),Arrays.asList("aa","bb","cc"));List list = Arrays.asList("Banana","apple","Orange");//创建gson对象Gson gson = new Gson();//Java对象 ==> json字符串String s1 = gson.toJson(list);String s2 = gson.toJson(user);//json字符串 ==> Java对象gson.fromJson(s1, List.class);gson.fromJson(s2, User.class);}

结语

感谢您的观看,如有不足之处,欢迎批评指正。

Java秘技之Json数据解析与转换 -- Java使用示例相关推荐

  1. json数据解析与JAVA对象转换以及在JQUERY中的使用

    JSON基础了解 JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小 ...

  2. dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析

    本文首发于微信公众号「后厂技术官」 前言 在Android开发中如果我们想要请求网络,可以使用HttpClent.HttpURLConnection,但在项目中一般都会使用OkHttp和Retrofi ...

  3. java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...

  4. Java对【JSON数据的解析】--官方解析法

    要求:解析下面5个JSON数据 1.String string ="{name:'zhangsan',age:18}"; 2.String string2 = "{per ...

  5. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  6. Android json数据解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  7. JSON 数据解析的方法

    JSON 数据解析 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使 ...

  8. 手动JSON数据解析

    1.将json格式的字符串{}转化为JAVA对象 //第一步:获取或创建Json数据String json = "{\n" +" \"id\":2,\ ...

  9. JSON数据解析及gson.jar包

    从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送. 服务器端的编程语言只能以如下 3 种格式返回数据: HTML XML JSON JSON一种简单的数据格式,比xml更轻巧. JS ...

最新文章

  1. Hadoop学习之第七章节:Hive安装配置
  2. python os.path模块学习(转)
  3. 快速排序算法的实现 随机生成区间里的数 O(n)找第k小 O(nlogk)找前k大...
  4. Java BigDecimal类的使用入门示例
  5. C++实现AOE网中的关键路径算法及机动时间计算算法(邻接表存储)
  6. 关于Spring batch的学习之CSV2DB
  7. HDFS剩余空间大小的Java接口,java api获取hdfs索引大小
  8. php ado 建立注册,如何注册ADO与DAO [Access软件网]
  9. Numpy的21个常用知识点
  10. JUC并发包基于AQS实现的线程同步器的案例分析
  11. Gary Marcus再发万字长文,列14个QA回应机器学习批判言论
  12. An error has occured.See the log file
  13. IE6 Peekaboo(躲躲猫) Bug
  14. 【转】图解领带的打法10种
  15. 微信支付的服务器配置url超时,微信H5支付商家存在未配置的参数,请联系商家解决的...
  16. Docker 修改容器端口
  17. mysqlbinlog恢复mysql表数据
  18. STM32F10x系列GPIO寄存器BRR、BSRR、ODR、IDR的使用理解
  19. MFC连接sqlite3数据库
  20. ubuntu11.10 华为无线上网卡e303s

热门文章

  1. Blazor——Asp.net core的新前端框架
  2. 福州首届.NET开源社区技术交流会圆满成功
  3. github开源项目免费使用Azure PipeLine
  4. .NET下使用socket.io随笔记录
  5. C#在Linux+Mono环境中使用微信支付证书
  6. 使用 Autofac 进行依赖注入
  7. 调试 不弹出 小米_时隔六年,小米NFC碰碰贴复活,碰一下自动亮灯、联网、投屏...
  8. word如何设置上标形式_如何在word中设置特殊页码
  9. memcache在项目中的应用
  10. mysql一张表最多多少索引_MySQL一个索引最多有多少个列?真实的测试例子