java解析JSON有多种方法,最常用的有3种:JSON官方的解析、GSON(谷歌)、FastJson(阿里)。

GSON解析:

1.新建项目,引入jar文件(可在GitHub上下载:https://search.maven.org/artifact/com.google.code.gson/gson):

首先,在项目中新建文件夹lib,将jar文件复制到lib下:

其次,依次点击File->Project Structrue->Libraries->+->java->选择项目->ok->ok:

这样就引入了,查看左侧gson下可以展开了:

可直接和对象类型进行转换:

        //创建Gson对象Gson gs=new Gson();//json和类对象直接相互转换//创建类对象Songs song=new Songs("Jay","七里香","七里香",6666);//将对象转为jsonString js=gs.toJson(song);System.out.println(js);//将json串转回对象String jss="{\"singer\":\"Jay\",\"Album\":\"七里香\",\"name\":\"七里香\",\"Views\":6666}";Songs newSong=gs.fromJson(jss,Songs.class);System.out.println(newSong.toString());//只获取json中每一项的值//{"singer":"Jay","Album":"七里香","name":"七里香","Views":6666,"haha":["hehe","houhou"]}HashMap hjs= gs.fromJson("{\"singer\":\"Jay\",\"Album\":\"七里香\",\"name\":\"七里香\",\"Views\":6666,\"haha\":[\"hehe\",\"houhou\"]}", HashMap.class);System.out.println(hjs.get("singer"));ArrayList as=(ArrayList)hjs.get("haha");System.out.println(as.get(1));List ss=(List)hjs.get("haha");System.out.println(ss.get(0));

其他方法暂不总结,具体可参考https://www.jianshu.com/p/558844c96fc1

FastJson解析:

也可与对象相互转换:

        //FastJson:对象转JsonString s = JSON.toJSONString(song);System.out.println(s);//Json转对象 {"singer":"Jay","Album":"七里香","name":"七里香","Views":6666}Songs songs = JSON.parseObject("{\"singer\":\"Jay\",\"Album\":\"七里香\",\"name\":\"七里香\",\"Views\":6666}", Songs.class);System.out.println(songs.getName());//转换数组 ["我的地盘","园游会","搁浅"]List<String> strings = JSON.parseArray("[\"我的地盘\",\"园游会\",\"搁浅\"]", String.class);System.out.println(strings.get(0));

其他方法暂不总结,可参考https://blog.csdn.net/weixin_33782386/article/details/88015470

JSON官方的解析:

1.新建项目,引入jar文件(可在GitHub上下载:https://github.com/stleary/JSON-java):

可解析出各个key对应的值,包括数组,但不能直接转换成对象,需要手动创建:

//JSON官方解析
String json1="{\"id\":0,\"name\":\"JAVAEE-1703\",\"stus\":[{\"id\":1,\"name\":\"刘一\",\"age\":16}]}";
//1.获取json对象(可以是字符串、Map、Bean等方式构建)
JSONObject jso=new JSONObject(json1);
//获取值
int id=jso.getInt("id");
System.out.println("id:"+id);
//int idd=jso.optInt("id");
//System.out.println("idd:"+idd);
String name=jso.getString("name");
System.out.println("id:"+id+",name:"+name+',');
//获取数组
JSONArray ja=jso.getJSONArray("stus");//这里注意JSONArray中JSON是大写哦,阿里的也是大写,谷歌的是Json
//解析数组,获取值
for (int i=0;i<ja.length();i++){//该数组为json对象数组JSONObject js1=ja.getJSONObject(i);//获取值int id1=js1.getInt("id");String name1=js1.getString("name");int age1=js1.getInt("age");System.out.println("id1:"+id1+",name1:"+name1+",age1:"+age1);
}

其他方法参考:

1.JSON对象创建

1.1 JSON对象

类名 用途描述
JSONObject String或者JSONTokener构建键/值对集合类对象(类比JAVA的Map), 并提供对象操作、序列化方法。
JSONArray String或者JSONTokener构建有序列表对象(类比JAVA的List), 并提供对象操作、序列化方法。
类名 用途描述
JSONTokener ReaderStringInputStream读取数据,辅助构建JSON核心对象
HTTPTokener 继承JSONTokener,从ReaderStringInputStream读取HTTP头,辅助构建JSON 核心对象
XMLTokener 继承JSONTokener,从ReaderStringInputStream读取XML文件,辅助构建JSON 核心对象
类名 用途描述
JSONWriter 用于以代码方式创建JSON对象
JSONStringer 继承JSONWriter,提供了JOSN对象转JSON文本的toString方法
JSONPointer 使用表达式匹配、操作JSON对象
类名 用途描述
CDL JSON与CDL之间的转换
HTTP JSON与HTTP报文头之间的转换
Cookie JSON与Cookie之间的转化
CookieList JSON与Cookie之间的转化
XML JSON与XML之间的转化
JSONML JSON与JSONML之间的转化

1.2 JSON对象创建

构造方式 说明
JSONObject() 创建一个空的JSONObject,可以通过JSONObject提供的方法操作该对象
JSONObject(String source) 使用String创建
JSONObject(String baseName, Locale locale) 使用ResourceBundle创建
JSONObject(JSONObject jo, String[] names) 从JSONObject中指定属性子集,生成新的JSONObject对象
JSONObject(JSONTokener x) 借助JSONTokener,从InputStream、Reader、String中创建
JSONObject(Map<?, ?> m) 使用Map创建
JSONObject(Object bean) 使用Bean创建
JSONObject(Object object, String[] names) 使用Bean并指定属性子集创建,注意保证需要的属性为public,详见常见问题
JSONObject.wrap(Object object)) 使用static方法,自动根据传入的JAVA 对象类型创建JSONObject或者JSONArray
构造方式 说明
JSONArray() 创建一个空的JSONArray,可以通过JSONArray提供的方法操作该对象
JSONArray(JSONTokener x) 借助JSONTokener,从InputStream、Reader、String中创建
JSONArray(String source) 使用String创建
JSONArray(Collection<?> collection) 使用Collection创建
JSONArray(Object array) 使用数组创建
JSONObject.wrap(Object object)) 使用static方法,自动根据传入的JAVA 对象类型创建JSONObject或者JSONArray

1.3 JSON对象操作

对象 方法
JSONObject accumulate、append、put、get、opt、remove、query、quote
JSONArray put、get、opt、remove、query、join
@JSONPropertyIgnore、JSONPropertyName 忽略属性、更改属性输出的key名称

2.构建JSON文本

方式 说明
JSONObject、JSONArray 构建核心对象后使用toStringwrite方法
JSONWriter、JSONStringer 使用JSONWriter、JSONStringer创建JSON文本

参考文献:https://blog.csdn.net/chc2327439008/article/details/104051317

java解析JSON的方法汇总相关推荐

  1. java解析json的一种方法

    package com.hanchao.web; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /************* ...

  2. java 解析json字符串

    初学java,参考网上的博客,总结解析json的方法.参考地址: http://blog.csdn.net/walkcode/article/details/8606752 1.例子: { " ...

  3. 如何使用java解析json文件并将其写入数据库

    JAVA解析JSON数据文件 在使用第三方的api文档时,会得到相应的JSON数据文件,那么我们怎样将JSON文件写入数据库从而测试数据呢?下面我将给大家做一个简单的展示. 一.什么是JSON JSO ...

  4. Java解析JSON出现双引号变成转义字符quot;解决办法

    Java解析JSON出现双引号变成转义字符" 问题描述: 在接口中读取传过来的json数据,但是双引号都转义成了" 读取xml文件格式如下: {"message" ...

  5. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  6. java解析json数组

    java解析json数组 import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; p ...

  7. Java解析JSON格式数据

    Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...

  8. Java解析JSON数据

    Java解析JSON数据 1.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式. 它基于 ECMAScript (欧洲计 ...

  9. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...

  10. JAVA 解析JSON数据

    JSON 是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java 语言中解析json数 ...

最新文章

  1. PYTHON编程导论群问题汇总(三)
  2. c语言和画图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  3. 基本CSS选择器,复合选择器,后代选择器
  4. 数据库报错1046-No database selected
  5. 局域网打印机共享怎么设置?如何设置打印机共享?
  6. Comet:基于 HTTP 长连接的“服务器推”技术解析
  7. LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)
  8. Dubbo在互金行业的应用
  9. 太赞了,Intellij IDEA竟然把Java8的数据流问题这么完美的解决掉了!
  10. 谷粒商城:06. 前端开发基础知识
  11. matlab图像分割基于小波变换,图小波变换在图像分割中的应用研究
  12. 微信小程序 解决disableScroll无法禁止小程序下拉的问题和视频铺满全屏尺寸
  13. 软件测试整改报告,软件测试工作效率低的改进措施
  14. kindle mobi词典格式分析及代码实现
  15. 分享一个性价比极高的代理IP
  16. java应届生面试收集总结
  17. Pointnet++中tf_ops三个.so文件的生成
  18. 转:CWnd的函数,以后可以在这儿找了!
  19. TCP的三次握手和四次挥手
  20. 深入分析分布式系统中互斥性与幂等性问题

热门文章

  1. 咸鱼ZTMR实例—PS2手柄控制板载LED
  2. 【JAVA程序设计】(C00075)基于SSM的网上汽车租赁管理系统
  3. 20个数据可视化工具点评
  4. 信号、频谱、能量、功率、噪声
  5. 电脑终端仿真程序(crt中文免费版) 附使用说明
  6. 【Android -- 技术周刊】第 021 期
  7. Qt介绍---QPA(Qt Platform Abstraction)
  8. 超级超级实用的整个网页截图技巧
  9. 三菱plc控制电动推杆
  10. 计算机四级题库百度云资源,计算机四级题库