java对于JSON的解析方法举例详解
1、数据类型
1.1、JSONObject
JSONObject是一种在Java中表示JSON对象的数据结构。它是一个无序的键值对集合,用花括号({})包围,并且每个键值对由冒号(:)分隔。
在Java中使用JSONObject,通常需要使用JSON库(如Jackson、Gson等)进行解析和操作。以下是一些常见的JSONObject操作:
创建JSONObject:
JSONObject jsonObject = new JSONObject();
添加键值对到JSONObject:
jsonObject.put("key1", "value1"); jsonObject.put("key2", 123); jsonObject.put("key3", true); // 可以添加其他JSONObject或JSONArray作为值
获取JSONObject中指定键的值:
Object value = jsonObject.get("key");
获取JSONObject中所有键的集合:
Set<String> keys = jsonObject.keySet();
遍历JSONObject中的所有键值对:
for (String key : jsonObject.keySet()) { Object value = jsonObject.get(key); // 处理每个键值对 }
将JSONObject转换为字符串:
String jsonString = jsonObject.toJSONString();
解析JSON字符串为JSONObject(使用JSON库的相关方法):
JSONObject jsonObject = JSON.parseObject(jsonString); // 示例使用JSON.simple库
需要注意的是,具体的操作方式和方法名称可能会因使用的JSON库而有所不同。上述示例中的方法是基于JSON.simple库进行说明的,其他库可能会有自己的API。
通过JSONObject,您可以方便地处理和操作JSON对象数据,在Java中实现与JSON对象的交互。
1.2、JSONArray
JSONArray是一种在Java中表示JSON数组的数据结构。它是在一对方括号([])内包含零个或多个JSON值的有序集合。JSONArray可以包含不同类型的值,例如字符串、数字、布尔值、对象或其他数组。
在Java中使用JSONArray,通常需要使用JSON库(如Jackson、Gson等)进行解析和操作。以下是一些常见的JSONArray操作:
创建JSONArray:
JSONArray jsonArray = new JSONArray();
添加元素到JSONArray:
jsonArray.add("value1"); jsonArray.add(123); jsonArray.add(true); // 可以添加其他JSONArray或JSONObject作为元素
获取JSONArray的长度(元素个数):
int length = jsonArray.size();
获取JSONArray中指定位置的元素:
Object element = jsonArray.get(index);
遍历JSONArray中的所有元素:
for (Object element : jsonArray) { // 处理每个元素 }
将JSONArray转换为Java数组:
Object[] array = jsonArray.toArray();
将JSONArray转换为字符串:
String jsonString = jsonArray.toJSONString();
解析JSON字符串为JSONArray(使用JSON库的相关方法):
JSONArray jsonArray = JSON.parseArray(jsonString); // 示例使用JSON.simple库
需要注意的是,具体的操作方式和方法名称可能会因使用的JSON库而有所不同。上述示例中的方法是基于JSON.simple库进行说明的,其他库可能会有自己的API。
通过JSONArray,您可以方便地处理和操作JSON数组数据,在Java中实现与JSON数组的交互。
1.3、ArrayList
ArrayList是Java中的一种动态数组(也称为可变大小的数组),它实现了List接口。与传统的静态数组相比,ArrayList具有自动扩展和缩小容量的能力,可以根据需要动态地调整其大小。
以下是一些常见的ArrayList操作:
创建ArrayList:
ArrayList<String> list = new ArrayList<>(); // 创建一个存储字符串的ArrayList
添加元素到ArrayList:
list.add("element1"); list.add("element2"); // 可以添加任意类型的对象到ArrayList
获取ArrayList中指定位置的元素:
String element = list.get(index);
修改ArrayList中指定位置的元素:
list.set(index, "new element");
删除ArrayList中指定位置的元素:
list.remove(index);
删除ArrayList中指定元素的第一个匹配项:
list.remove("element");
判断ArrayList是否包含指定元素:
boolean contains = list.contains("element");
获取ArrayList的大小(包含的元素个数):
int size = list.size();
遍历ArrayList中的所有元素:
for (String element : list) { // 处理每个元素 }
将ArrayList转换为数组:
String[] array = list.toArray(new String[0]);
需要注意的是,ArrayList可以存储任意类型的对象,而不限于基本数据类型。使用ArrayList时,您可以根据需要动态地添加、删除和修改元素,提供了更灵活的数据存储和操作方式。
2、java转JSON
2.1、javaBean对象转化为JSON串
public void javaBeanToJSON() { Person person = new Person(1001,"张三",20,"2002-07-18 12:20:34"); // 有参构造函数(实体类) // JSON类有静态方法直接调用可以将javaBean对象转化为JSON串 String jsonString = JSON.toJSONString(person,true); System.out.println(jsonString); }
结果
{
"age":20,
"birthday":"2002-07-18 12:20:34",
"eid":1001,
"username":"张三"
}
2.2、JavaBean对象的数组转化成JSON数组
public void arrayToJSON() { Person p1 = new Person(1001,"张三",20,"2002-07-18 12:20:34"); Person p2 = new Person(1002,"张四",21,"2003-07-18 12:20:34"); Person p3 = new Person(1003,"张五",22,"2004-07-18 12:20:34"); Person[] persopns = {p1,p2,p3}; // 数组转化成JSON格式的数组 String jsonString = JSON.toJSONString(persopns, true); // true 是否严格转化成json数组 System.out.println(jsonString); }
结果
[{
"age":20,
"birthday":"2002-07-18 12:20:34",
"eid":1001,
"username":"张三"
},{
"age":21,
"birthday":"2003-07-18 12:20:34",
"eid":1002,
"username":"张四"
},{
"age":22,
"birthday":"2004-07-18 12:20:34",
"eid":1003,
"username":"张五"
}]
2.3、List集合转化成JSON格式
public void listToJSON() { Person p1 = new Person(1001,"张三",20,"2002-07-18 12:20:34"); Person p2 = new Person(1002,"张四",21,"2003-07-18 12:20:34"); Person p3 = new Person(1003,"张五",22,"2004-07-18 12:20:34"); List<Person> list = new ArrayList<Person>(); list.add(p1); list.add(p2); list.add(p3); // Collections.addAll(list,p1,p2,p3); // 一次性add String jsonString = JSON.toJSONString(list,true); System.out.println(jsonString); }
结果
[
{
"age":20,
"birthday":"2002-07-18 12:20:34",
"eid":1001,
"username":"张三"
},
{
"age":21,
"birthday":"2003-07-18 12:20:34",
"eid":1002,
"username":"张四"
},
{
"age":22,
"birthday":"2004-07-18 12:20:34",
"eid":1003,
"username":"张五"
}
]
3、JSON转Java
2.1、JSON转化为JAVA的Bean
public void jsonToJavaBean() { String json = "{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"张三\"}"; Person person = JSON.parseObject(json,Person.class); // Person.class 类的结构信息 System.out.println(person); }
结果
Person{eid=1001, username='张三', age=20, birthday='2002-07-18 12:20:34'}
3.2、JSON转化为java集合
public void JSONToJavaList() { String json = "[{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"张三\"},{\"age\":21,\"birthday\":\"2003-07-18 12:20:34\",\"eid\":1002,\"username\":\"张四\"},{\"age\":22,\"birthday\":\"2004-07-18 12:20:34\",\"eid\":1003,\"username\":\"张五\"}]"; List<Person> list = JSON.parseArray(json, Person.class); System.out.println(list); }
结果
[Person{eid=1001, username='张三', age=20, birthday='2002-07-18 12:20:34'},
Person{eid=1002, username='张四', age=21, birthday='2003-07-18 12:20:34'},
Person{eid=1003, username='张五', age=22, birthday='2004-07-18 12:20:34'}]
4、JSONObject与JSONArray
4.1、JSONArray
[ { "key": "value", "key2": "value2" }, { "key": "value", "key2": "value2" }, { "key": "value", "key2": "value2" } ]
或
[ { "key": "value" }, { "key": "value" }, { "key": "value" } ]
4.2 JSONObject
{ "key": "value", "key2": "value2", "key3": "value3" }
4.3、两者的区别
区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),JSONArray由一个或者多个JSONObjec 组成,说白点就是一个是数组一个是对象或字符串
两者的区别就是JSONArray是数组,里面存着对象;JSONObect是对象,里面存的是字符串。通俗来说,JSONArray是运输机,里面装的是汽车,汽车里面坐的是人,而JSONObect是汽车,里面装的是人。
JSONArray和JSONObject再使用时候的第一个最重要的区别就是: JSONArray是一个一个加进去的;
JSONObject是一对一对加进去的;JSONObject最外面用的是 { } ,JSONArray最外面用的是 [ ]
5、JSONArray与List互转
5.1JSONArray转List
5.1.1.JSONArray字符串转List
//初始化JSONArray JSONArray array=new JSONArray(); array.add(0,"a"); array.add(1,"b"); array.add(2,"c"); List<String> list = JSONObject.parseArray(array.toJSONString(),String.class); System.out.println(list.toString());
结果:
[a, b, c]
5.1.2.JSONArray对象 转 List
//初始化JSONArray JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]"); //打印jsonArray System.out.println(jsonArray.toJSONString()); //转List List<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class); //打印List<Body> System.out.println(list.toString());
结果
[{“name”:“zhangsan”,“age”:18},{“name”:“lisi”,“age”:23}]
[Body{name=‘zhangsan’, age=18}, Body{name=‘lisi’, age=23}]
5.2 .List转JSONArray
List<T> list = new ArrayList<T>(); JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(list));
总结
到此这篇关于java对于JSON的解析方法的文章就介绍到这了,更多相关java解析JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中ThreadLocal 导致内存 OOM 的原因分析
这篇文章主要介绍了Java中ThreadLocal导致内存OOM的原因分析,文章基于Java的相关内容展开ThreadLocal导致内存OOM的原因分析,需要的小伙v阿布可以参考一下2022-05-05在Spring-Boot中如何使用@Value注解注入集合类
这篇文章主要介绍了在Spring-Boot中如何使用@Value注解注入集合类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieva
最近的项目,突然都从MySQL5.7升级到8.0了,有些项目能运行成功,有些项目遇到了问题,启动不成功,显示数据库方面的异常信息,本文给大家介绍了SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed的解决方案,需要的朋友可以参考下2024-04-04
最新评论