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的方法”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。














