![e8d631a11a67f5ab71fd9e0ef0b18c56.png](https://i-blog.csdnimg.cn/blog_migrate/97563bbd49d69947be4efeab31833668.jpeg)
1. 常用的JSON转换
- JSONObject 转 JSON 字符串
![bb73988cec20f012b40fd17b1a9a037b.png](https://i-blog.csdnimg.cn/blog_migrate/e991e2f257834d75699e3595217bba9b.png)
- JSON字符串转JSON
![b5fb1b75a0351c2b57d329e58453b09e.png](https://i-blog.csdnimg.cn/blog_migrate/2fd674392ad314357e7c513ebd0ac0a9.png)
- 实体类转JSON
![1446249d7e75bbfcc98d81e62ef357b5.png](https://i-blog.csdnimg.cn/blog_migrate/199cc6d2c961d9b6df494be0c56e52d7.jpeg)
- Map转JSON
![528154fe512947c41ff943eb1c3d01bf.png](https://i-blog.csdnimg.cn/blog_migrate/896bbf8426bc97c04f7e20002fcc2345.png)
- JSON转Map
![0bcfe69ece4bf480989b113cf7632404.png](https://i-blog.csdnimg.cn/blog_migrate/2d07eef8db00978444accc8404b7f5d0.png)
2. 将多个JSON合并一个
![4a837e97e4a1587047f031bcad991019.png](https://i-blog.csdnimg.cn/blog_migrate/5e15a417e99e695a98e10bbba0da3521.jpeg)
json1,json2
为JSONObject。 最终的代码格式:
![86275e2b26bbc741ec9e247212423fbc.png](https://i-blog.csdnimg.cn/blog_migrate/6c84ffc18dd7759b42395ce3e16f0b50.jpeg)
3.JSON拆分
不同的需求有不同的做法,以下提供两种解决思路
- 定义两个或多个JSON进行put和remove 比如明确需要哪些字段的时候可以定义一个数组用来存放key信息。存放和删除的时候只需要遍历数组就可以。
- 遍历JSON,获取key,value再重新put
4.JSON遍历
- 定义一个工具类,获取key和value
![aa8fea5610bc609db41668c51198db5d.png](https://i-blog.csdnimg.cn/blog_migrate/bfbaa4d58b9b8d9c7b0fc8eeca6ea72a.png)
2. JSONArray遍历的方式有很多种
-
- for
![d538d68c95d65c2aa94988c7f5799f19.png](https://i-blog.csdnimg.cn/blog_migrate/95076c8bbf1e4a71fc12132decd9b4d7.jpeg)
-
- foreach
![d9198466e901ae93ee4aed55a7f29745.png](https://i-blog.csdnimg.cn/blog_migrate/ac3d4d6ba8911e9e743361eafd77fa14.png)
-
- Iterator
![a60f61824fd23ad48f3f91f5dcd0c0b7.png](https://i-blog.csdnimg.cn/blog_migrate/20d266c1c9480da8054f716a35012b35.png)
5.JSONPath
另外向大家推荐一个非常好用的工具:JSONPath。
JSONPath是一种简单的方法来提取给定JSON的部分内容,使用方式类似于正则表达式。
简单描述下使用方法已经自己使用的案例 pom文件依赖:
![3df450aaa59c646814c1266db3ec1c2d.png](https://i-blog.csdnimg.cn/blog_migrate/fbb2a6234940e4a378cade0fdd11cf27.png)
JsonPath表达式总是以与XPath表达式结合使用XML文档相同的方式引用JSON结构。
JsonPath中的“根成员对象”始终称为$,无论是对象还是数组。
JsonPath表达式可以使用点表示法。
这里有个表格,说明JSONPath语法元素和对应XPath元素的对比。
![48aceb560d2943001459ec33c9c0cc44.png](https://i-blog.csdnimg.cn/blog_migrate/b2f7b81915095dd7c25f65f91459f9e6.jpeg)
官方案例:
![aa86bb976468e763c09ed16282e8a25b.png](https://i-blog.csdnimg.cn/blog_migrate/b99db37d4272aeb68d351a5ce589c2cd.jpeg)
![4029de5da26c814874c9cd4d4d226adf.png](https://i-blog.csdnimg.cn/blog_migrate/b90d9c5590576908cc2a1d6efbabf26f.jpeg)
详细大家还是参照官方解说。 下面是我写的案例:
![9e3bb2f2668e27ded5980856984c96e2.png](https://i-blog.csdnimg.cn/blog_migrate/68e3f649d5a42ba7abc524a00a81a5f3.jpeg)
![e8f4e23e8a183a7c3e9acebbbb22fc62.png](https://i-blog.csdnimg.cn/blog_migrate/4b099456af28eae4cd17d0413c2f41c2.jpeg)
需要注意的是这里的JSONArray是JSONPath的,所以导包是
net.minidev.json.JSONPath
JSON格式不会变,所以可以转换为alibaba的JSONArray:
![8e89d59e14112ad4e1d766898498201a.png](https://i-blog.csdnimg.cn/blog_migrate/962620bfab88bd68133d0775277f9a0c.png)
这里要注意一点也是我踩过的坑:如果获取一个JSONObject下有多个同名的JSONArray,那么返回的[]也是多个。要先遍历获取到的数据,在取其中的一个JSON块。
感谢各位的观看,如果有不对的地方或者是好的建议,还请各位大佬指教。后期如果用到其他的JSON相关的也会更新文章。
作者:LeeShaoQing
链接: https:// juejin.cn/post/69186281 96636164103
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。