JSON字符串转换JSONObject和JSONArray的方法
一、概述
在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于不同的应用程序之间传输数据,JSON的基本结构包括对象(Object)和数组(Array),分别用大括号{}
和方括号[]
包围,键值对由冒号:
分隔,多个键值对或元素由逗号,
分隔。
二、JSONObject与JSONArray的区别
JSONObject:表示一个无序的键值对集合,最外层使用大括号{}
包围。{"name":"John Doe","age":30,"isStudent":false,"hobbies":["reading","coding","swimming"]}
JSONArray:表示一个有序的值集合,最外层使用方括号[]
包围。[{"column":"amount","aggType":"sum"},{"column":"audit_date","aggType":"[a,b]","values":["20200315","20200415"]},null]
三、JSON字符串转换为JSONObject和JSONArray的方法
1. 使用fastjson库
String转JSONObject
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { String jsonString = "{\"datasetId\":602,\"cfg\":\"\"}"; JSONObject jsonObject = JSON.parseObject(jsonString); System.out.println(jsonObject); } }
String转JSONArray
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; public class Main { public static void main(String[] args) { String jsonString = "[{\"column\":\"amount\",\"aggType\":\"sum\"},{\"column\":\"audit_date\",\"aggType\":\"[a,b]\",\"values\":[\"20200315\",\"20200415\"]},null]"; JSONArray jsonArray = JSON.parseArray(jsonString); System.out.println(jsonArray); } }
JSONObject中的数据提取为JSONArray
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { String jsonString = "{\"datasetId\":602,\"values\":[{\"column\":\"amount\",\"aggType\":\"sum\"},{\"column\":\"audit_date\",\"aggType\":\"[a,b]\",\"values\":[\"20200315\",\"20200415\"]}]}"; JSONObject jsonObject = JSON.parseObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray("values"); System.out.println(jsonArray); } }
JSONArray提取为JSONObject
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { String jsonString = "[{\"columnName\":\"assets_group\",\"filterType\":\"≠\",\"values\":[\"苹果\"]},{\"columnName\":\"audit_date\",\"filterType\":\"[a,b]\",\"values\":[\"20200315\",\"20200415\"]},null]"; JSONArray jsonArray = JSON.parseArray(jsonString); JSONObject jsonObject = jsonArray.getJSONObject(0); System.out.println(jsonObject); } }
JSONObject获取value
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { String jsonString = "{\"datasetId\":602,\"cfg\":\"\"}"; JSONObject jsonObject = JSON.parseObject(jsonString); Object value = jsonObject.get("datasetId"); System.out.println(value); // 输出:602 } }
Map转JSONstring
import com.alibaba.fastjson.JSON; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Object> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", 123); String jsonString = JSON.toJSONString(map); System.out.println(jsonString); // 输出:{"key1":"value1","key2":123} } }
JSON转实体类
import com.alibaba.fastjson.JSON; import java.util.List; public class Main { public static void main(String[] args) { String jsonStr = "{\"name\":\"John Doe\",\"age\":30,\"isStudent\":false,\"hobbies\":[\"reading\",\"coding\",\"swimming\"]}"; Person person = JSON.parseObject(jsonStr, Person.class); System.out.println(person); } } class Person { private String name; private int age; private boolean isStudent; private List<String> hobbies; // getters and setters }
实体类转JSON
import com.alibaba.fastjson.JSON; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { Person person = new Person(); person.setName("John Doe"); person.setAge(30); person.setStudent(false); List<String> hobbies = Arrays.asList("reading", "coding", "swimming"); person.setHobbies(hobbies); String jsonStr = JSON.toJSONString(person); System.out.println(jsonStr); // 输出:{"name":"John Doe","age":30,"isStudent":false,"hobbies":["reading","coding","swimming"]} } }
四、相关问题与解答栏目
问题1:如何在Java中使用Gson库将JSON字符串转换为Java对象?
答:要在Java中使用Gson库将JSON字符串转换为Java对象,首先需要定义一个与JSON结构匹配的Java类,然后使用Gson库的解析功能来实现转换,以下是一个示例:
import com.google.gson.Gson; public class Main { public static void main(String[] args) { String jsonStr = "{\"name\":\"John Doe\",\"age\":30,\"isStudent\":false,\"hobbies\":[\"reading\",\"coding\",\"swimming\"]}"; Gson gson = new Gson(); Person person = gson.fromJson(jsonStr, Person.class); System.out.println(person); } } class Person { private String name; private int age; private boolean isStudent; private List<String> hobbies; // getters and setters }
在这个例子中,我们使用了Gson库的fromJson
方法将JSON字符串转换为Person类的实例,需要注意的是,Person类的属性必须与JSON字符串中的键名相匹配,并且属性类型也必须与相应的值类型相匹配,如果JSON字符串中的某个键在Person类中没有对应的属性,那么这个键将被忽略。
到此,以上就是小编对于“JSON字符串转换JSONObject和JSONArray的方法”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。