一、API介绍
Javajson转数组是一个非常强大的API,它可以将JSON格式的字符串转换成Java数组。它的主要作用是在Java项目中处理JSON数据,这在互联网项目中使用得非常频繁。
要使用Javajson转数组,我们需要引入以下依赖项:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20200518</version>
</dependency>
引入依赖项后,我们就可以使用Javajson转数组来解析JSON数据了。
二、Javajson转数组的基本用法
我们可以将JSON字符串转换成Javajson对象,然后从中提取我们需要的信息:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JavajsonExample {
public static void main(String[] args) {
String jsonStr = "{\"name\": \"Alice\", \"age\": 20}";
try {
JSONObject jsonObject = new JSONObject(jsonStr);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
System.out.println("name: " + name + ", age: " + age);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
在上面的例子中,我们首先定义了一个JSON字符串,表示一个人的基本信息。然后我们将这个字符串转换成一个JSONObject对象。我们可以使用getString方法和getInt方法来分别获取“name”和“age”字段的值,并打印输出。
三、从JSON数组中获取数据
JSON数组是由多个JSON对象组成的数据集合。我们可以使用Javajson转数组来获取JSON数组中的数据。下面是一个使用Javajson转数组读取JSON数组的例子:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JavajsonExample {
public static void main(String[] args) {
String jsonStr = "[{\"name\": \"Alice\", \"age\": 20}, {\"name\": \"Bob\", \"age\": 25}]";
try {
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
System.out.println("name: " + name + ", age: " + age);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
在上面的例子中,我们首先定义了一个JSON数组,表示两个人的基本信息。然后我们使用Javajson转数组将JSON字符串转换成一个JSONArray对象。我们可以使用getJSONObject方法来获取JSON数组中的每个JSON对象,然后获取其字段的值,并打印输出。
四、将JSON字符串解析成Java列表
Javajson转数组可以将JSON字符串解析成Java列表。我们可以将JSON数组或JSON对象转换成Java列表或Java对象:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JavajsonExample {
public static void main(String[] args) {
String jsonStr = "[{\"name\": \"Alice\", \"age\": 20}, {\"name\": \"Bob\", \"age\": 25}]";
List<Person> list = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
list.add(new Person(name, age));
}
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(list);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
在上面的例子中,我们首先定义了一个JSON数组,表示两个人的基本信息。然后我们使用Javajson转数组将JSON字符串转换成一个JSONArray对象。我们使用getJSONObject方法来获取JSON数组中的每个JSON对象,并封装在一个自定义的Person对象中。最后我们将这些Person对象放在一个Java列表中,打印输出。
五、处理嵌套JSON数据
有时候,JSON数据中会有嵌套的JSON数据。我们可以使用Javajson转数组来处理这种情况。下面是一个使用Javajson转数组解析嵌套JSON数据的例子:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JavajsonExample {
public static void main(String[] args) {
String jsonStr = "{\"name\": \"Alice\", \"age\": 20, \"books\": [{\"title\": \"Java编程思想\", \"price\": 50.0}, {\"title\": \"编写高质量代码\", \"price\": 45.0}]}";
try {
JSONObject jsonObject = new JSONObject(jsonStr);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
JSONArray jsonArray = jsonObject.getJSONArray("books");
List<Book> books = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject bookObject = jsonArray.getJSONObject(i);
String title = bookObject.getString("title");
double price = bookObject.getDouble("price");
books.add(new Book(title, price));
}
Person person = new Person(name, age, books);
System.out.println(person);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
private List<Book> books;
public Person(String name, int age, List<Book> books) {
this.name = name;
this.age = age;
this.books = books;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", books=" + books +
'}';
}
}
class Book {
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", price=" + price +
'}';
}
}
在上面的例子中,我们首先定义了一个JSON字符串,其中有一个books字段表示一个人的阅读清单。然后我们使用Javajson转数组将JSON字符串转换成一个JSONObject对象。我们使用getString方法和getInt方法来分别获取“name”和“age”字段的值,并使用getJSONArray方法获取“books”字段的值。然后我们使用循环遍历“books”字段中的每个JSON对象并提取其字段的值。最后我们使用封装好的Person和Book对象来表示这些信息,打印输出。