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 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 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 list = new ArrayList();

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 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 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 list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);

//打印List

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 list = new ArrayList();

JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(list));

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: