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

概要

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);}

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑科技轮胎:有能发电的,脑洞简直不要太大...

全世界只有3.14 % 的人关注了青少年数学之旅人类历史上的很多伟大发明&#xff0c;都是由脑洞产生的&#xff0c;这样那样&#xff0c;然后问题就解决了&#xff0c;过程很复杂&#xff0c;却又很简单&#xff0c;甚至有时候&#xff0c;是一种很奇葩的方式。在漫长的历史进程中…

将权限授予文件夹和程序集

http://technet.microsoft.com/zh-cn/office/zdc263t0.aspx 如何&#xff1a;将权限授予文件夹和程序集 (2003 System) 注意 适用于 本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 有关更多信息&#xff0c;请参见按应用程序…

VS 2019 16.11正式发布 | 新功能(Hot Reload 热重载)试用

VS 2019 16.11VS 2019 16.11已于2021.8.10正式发布。&#xff08;https://devblogs.microsoft.com/visualstudio/visual-studio-16-11/&#xff09;这个版本主要包括以下内容&#xff1a;Visual Studio中的Git工具体验改进支持.NET应用程序的Hot Reload&#xff08;热重载&…

测试String, StringBuilder,StringBuffer 的数据,我居然发现这些了~~

懒的搞什么开头了&#xff0c;直接撸代码吧 想了想还是给大家看看学姐照片吧&#xff0c;保持眼睛的明亮&#xff0c;代码敲多了&#xff0c;伤眼 1&#xff1a; 作StringBuilder与String的拼接比较 Test public void testString () {String s"";long begin S…

LeetCode --- Valid Parentheses

题目链接 Problem discription Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and…

作息时间安排:

7&#xff1a;20起床7&#xff1a;30出发7&#xff1a;40早饭11&#xff1a;30-12&#xff1a;00午饭13&#xff1a;00-13&#xff1a;30午睡5&#xff1a;30-6&#xff1a;00 打水、 锻炼身体&#xff08;跑步到燕宏桥&#xff09;6&#xff1a;00-7&#xff1a;30 学习 英语、…

厉害了!这里藏着通关学霸的秘籍

全世界只有3.14 % 的人关注了青少年数学之旅在这个资讯丰富且易获取的时代&#xff0c;越来越多的人不愿意花时间阅读书籍&#xff0c;碎片化阅读成了主流。人们获取的东西多而杂&#xff0c;很难系统、全面。海量信息对人是冲击&#xff0c;更是诱惑。谁不想了解天下奇闻&…

学习了MPLS ×××

最近学习了一下MPLS 技术,确实蛮复杂的,而且觉得MPLS 技术主要是用在ISP以及厂商里面,是未来网络架构的一种主流技术,要完全掌握确实不是一件容易的事情,没法子,只能好好的先把理论学通了~加油加油~~TCP/IP路由技术我也还在看,全英文版,总体感觉英文版要比中文版容易理解的多了…

『 编程思维』之我见

编程思维&#xff0c;对于一个开发人员来说是必备的&#xff0c;但凡能让应用跑起来&#xff0c;不管应用的大小&#xff0c;优劣&#xff0c;说明这个开发人员都具有编程思维&#xff0c;毕竟程序认可了这个开发人员逻辑&#xff0c;能启动起来。小到几行代码&#xff0c;一个…

史上最全图详解Jvm—诊断工具和JVM监控

3.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限&#xff1a; 1&#xff0e;无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间等&#xff08;这对定位应用性能瓶颈至…

STL容器[10]

STL容器[0] 转载于:https://www.cnblogs.com/motadou/archive/2009/11/29/1613152.html

去医院看病如何开开心心出来? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源百度弱智吧&#xff0c;侵权删&#xff09;

BF533和触摸屏接口芯片TSC2200调试日志

问了一下亿旗&#xff0c;终于调出来了&#xff0c;下面是部分源代码&#xff1a;//************************************************// //** file: spi.c //** target: ADSP-BF533 //** creat time: 2008-8-19 #include <ccblkfn.h> #include <cdefBF533.h> #in…

玩机器学习,能不知道它?

推荐一个端对端的开源机器学习平台编程导航 致力于推荐优质编程资源 ????项目开源仓库&#xff1a;https://github.com/liyupi/code-nav跪求一个 star ⭐️大家好&#xff0c;我是编程导航的小编 Made 。今天安利一个强大的开源机器学习平台—TensorFlow。TensorFlow 是一个…

js获取当前页面url网址等信息

使用js获取当前页面的url网址信息。 1、设置或获取整个 URL 为字符串&#xff1a; window.location.href 2、设置或获取与 URL 关联的端口号码&#xff1a; window.location.port 3、设置或获取 URL 的协议部分 window.location.protocol 4、&#xff08;www.jbxue.com&…

面试被问到Java 静态代理/动态代理?不用怕,这样子就可以!!

理解Java动态代理需要对Java的反射机制有一定了解 什么是代理模式# 在有些情况下&#xff0c;一个客户不能或者不想直接访问另一个对象&#xff0c;这时需要找一个中介帮忙完成某项任务&#xff0c;这个中介就是代理对象。 例如&#xff0c;购买火车票不一定要去火车站买&…

ASP.NET 视频截图功能的C#代码

前公司在制作播客系统(Web程序)中,用到从视频截图功能.下边是截图CatchImg方法,可从大多数的视频文件中截图成功,大家可测试;如果截图不成功,大多是因为视频本身的问题,如编码标准或加了密.但从在线录制的视频Flv文 前公司在制作播客系统(Web程序)中,用到从视频截图功能.下边是…

那些读了硕士博士的人,最不想让你知道的是什么?

全世界只有3.14 % 的人关注了青少年数学之旅在这个资讯丰富且易获取的时代&#xff0c;越来越多的人不愿意花时间阅读书籍&#xff0c;碎片化阅读成了主流。人们获取的东西多而杂&#xff0c;很难系统、全面。海量信息对人是冲击&#xff0c;更是诱惑。谁不想了解天下奇闻&…

ASP.NET中常用的26个优化性能方法

1. 数据库访问性能优化 数据库的连接和关闭访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证&#xff0c;比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户…

.NET Core 中有等价的 HttpContext.Response.Cache 吗?

咨询区 jackmusick&#xff1a;我想禁掉浏览器缓存&#xff0c;这样我的client端每次都能看到server端的最新内容&#xff0c;在 asp.net 时代可以这么写。public class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingC…