这篇文章主要介绍了基于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的四种JSON解析方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
我们在日常开发中少不了和JSON数据打交道,那么我们来看看Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中常用的JSON解析方式。
1、JSON官方
2、GSON
3、FastJSON
杰克逊
JSON操作涉及到的类:
公共课学生{
私有int id
私有字符串名称;
私人年龄;
public int getId() {
返回id;
}
public void setId(int id) {
this.id=id
}
公共字符串getName() {
返回名称;
}
公共void集合名称(字符串名){
this.name=name
}
public int getAge() {
回归年龄;
}
公共无效存储(整数){
this.age=年龄;
}
public Student(int id,String name,int age) {
super();
this.id=id
this.name=name
this.age=年龄;
}
公共学生(){
super();
}
@覆盖
公共字符串toString() {
返回学生[id=' id ',name=' name ',age=' age ']';
}
}
公共课成绩{
私有int id
私有字符串名称;
私有数组列表学生状态
public Grade(int id,String name,ArrayListStudent stus) {
super();
this.id=id
this.name=name
this.stus=stus
}
公共等级(){
super();
}
@覆盖
公共字符串toString() {
返回Grade [id=' id ',name=' name ',stus=' stus ']';
}
public int getId() {
返回id;
}
public void setId(int id) {
this.id=id
}
公共字符串getName() {
返回名称;
}
公共void集合名称(字符串名){
this.name=name
}
公共数组列表学生getStus(){
返回secure telephone units 电话安全装置
}
public void setStus(数组列表学生stus){
this.stus=stus
}
}
JSON官方的解析最具有通用性,但是有点小麻烦。
公共类JSONTest {
//解析JSON
@测试
公共void test1()抛出JSONException{
//对象嵌套数组嵌套对象
String json1='{'id':1,' name':'JAVAEE-1703 ',' stus':[{'id':101,' name ':'刘一,'年龄':16 }]} ';
//数组
字符串JSON 2="["北京','天津','杭州']';
//1、
//解析第一层-对象
JSONObject作业对象1=新JSON对象(JSON 1);
年级年级=新年级();
等级。setid(作业对象1。getint(' id ');
等级。设置名称(作业对象1。getstring(' name ');
ArrayList学生stus=new ArrayList();
等级。setstus(斯图);
//解析第二层-数组
JSON数组JSON数组2=作业对象1。getjson数组(' stus ');
//遍历数组获取元素-对象
for(int I=0;ijsonarray 2。长度();i ){
//解析第三层-对象
JSON对象作业对象3=JSON数组2。getjson对象(I);
学生学生=新生(工作对象3。getint(' id ')、作业对象3。getstring(' name ')、作业对象3。getint(' age ');
grade.getStus().添加(学生);
}
系统。出去。println(年级);
//获取当前对象的所有属性的迭代器对象
//迭代器字符串迭代器=作业对象1。keys();
//while (iterator.hasNext()) {
//String key=iterator。next();
//System.out.println('属性:'键);
//}
//2、
//获取数组对象
JSON数组jArray=新JSON数组(JSON 2);
ArrayList string list=new ArrayList();
//遍历获取元素
for(int I=0;ijarray。长度();i ){
//jarray。optstring(I);//等价于getXXX
列表。补充(jarray。getstring(I));
}
System.out.println('解析结果:'列表);
}
//生成JSON
@测试
公共void test2()抛出JSONException{
JSON对象jo1=new JSON对象();
jo1.put('id ',1001);
jo1.put('name ','范老');
jo1.put('年龄',20);
JSON对象jo2=new JSON对象();
jo2.put('id ',1002);
jo2.put('name ','平平');
jo2.put('年龄',19);
JSON数组ja2=new JSON数组();
ja2。put(jo1);
ja2。put(jo2);
JSON对象jo3=new JSON object();
jo3.put('id ',11);
jo3.put('name ',' JAVAEE-1704 ');
jo3.put('stus ',ja2);
字符串JSON=jo3。tostring();
系统。出去。println(JSON);
}
}
GSON解析是谷歌的,也比较好用
公共类GSONTest {
//解析
@测试
公共void test1() {
//对象嵌套数组嵌套对象
String json1='{'id':1,' name':'JAVAEE-1703 ',' stus':[{'id':101,' name ':'刘一,'年龄':16 }]} ';
//数组
字符串JSON 2="["北京','天津','杭州']';
Gson Gson=new Gson();
//1、
//解析对象:第一个参数:待解析的字符串第二个参数结果数据类型的班级对象
年级grade=gson.fromJson(json1,年级。类);
系统。出去。println(年级);
//2、
//解析数组要求使用类型
ArrayList string list=gson。来自JSON(JSON 2,
new TypeTokenArrayListString(){ } .getType());
系统。出去。println(列表);
}
//生成
@测试
public void test2(){
ArrayList学生列表=new ArrayList();
for(int I=1;i3;i ){
list.add(新生(101我,’码子,20i));
}
等级等级=新等级(100001,'张三,列表);
Gson Gson=new Gson();
//将对象转换为诶JSON格式字符串
字符串JSON=gson。toj son(年级);
系统。出去。println(JSON);
}
}
法斯特森是阿里巴巴的产品,效率最高
公共类FASTJson {
//解析
@测试
公共void test1() {
//对象嵌套数组嵌套对象
String json1='{'id':1,' name':'JAVAEE-1703 ',' stus':[{'id':101,' name ':'刘铭,'年龄':16 }]} ';
//数组
字符串JSON 2="["北京','天津','杭州']';
//1、
//静态方法
年级年级=JSON。解析对象(JSON 1,grade。类);
系统。出去。println(年级);
//2、
ListString list=JSON。解析数组(JSON 2,string。类);
系统。出去。println(列表);
}
//生成
@测试
public void test2(){
ArrayList学生列表=new ArrayList();
for(int I=1;i3;i ){
list.add(新生(101我,’码子,20i));
}
等级等级=新等级(100001,'张三,列表);
字符串JSON=JSON。tojsonstring(等级);
系统。出去。println(JSON);
}
}
杰克逊解析JSON,SpringMVC内置的解析器就是这个
公共类杰克逊斯特{
//解析
@测试
公共void test1()引发异常{
//对象嵌套数组嵌套对象
String json1='{'id':1,' name':'JAVAEE-1703 ',' stus':[{'id':101,' name ':'刘一,'年龄':16 }]} ';
//数组
字符串JSON 2="["北京','天津','杭州']';
//1、
对象映射器mapper=新对象映射器();
等级grade=mapper。读值(JSON 1,成绩。类);
系统。出去。println(年级);
//2、
数组列表字符串列表=映射器。读取值(JSON 2、
新的typerreferencearrayliststring(){
});
系统。出去。println(列表);
}
//生成
@测试
公共void test2()引发JsonProcessingException{
ArrayList学生列表=new ArrayList();
for(int I=1;i3;i ){
list.add(新生(101我,’码子,20i));
}
等级等级=新等级(100001,'张三,列表);
对象映射器mapper=新对象映射器();
//将对象转换为JSON格式字符串
字符串JSON=mapper。writevalueasstring(grade);
系统。出去。println(JSON);
}
}
除了JSON官方的对类没有要求,剩下的都要求是标准的类,否则无法解析,因为都用到了反射。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。