一、JSON的概念及作用
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。相比XML,JSON更加简单明了,且占用的资源更少。在实际开发中,JSON被广泛应用于Web服务之间的数据传输。
在Java中,我们可以通过JSON来传递对象等数据结构。Java中有很多JSON解析库,今天我们将使用Google的GSON来进行JSON解析操作。GSON是一个可以将Java对象转换为JSON字符串或将JSON字符串转换为Java对象的Java库。它可用于传输和存储诸如配置文件之类的数据。以下是一个简单的JSON字符串示例:
{
"name": "Tom",
"age": 25,
"address": {
"city": "Beijing",
"street": "Chaoyang Road",
"postcode": "100101"
},
"languages": [
"Java",
"C++",
"Python"
]
}
二、在Java中使用GSON解析JSON
GSON库提供了一个简单的API来序列化和反序列化Java对象和JSON。以下是一个使用GSON将Java对象转换为JSON字符串的示例:
import com.google.gson.Gson;
public class MyClass {
public static void main(String[] args) {
Gson gson = new Gson();
Person person = new Person("Tom", 25);
String jsonStr = gson.toJson(person);
System.out.println(jsonStr);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
运行上述程序,将输出以下JSON字符串:
{
"name": "Tom",
"age": 25
}
可以看到,GSON自动将Person对象转换为了对应的JSON格式。
接下来看一个将JSON字符串转换为Java对象的示例:
import com.google.gson.Gson;
public class MyClass {
public static void main(String[] args) {
Gson gson = new Gson();
String jsonStr = "{\"name\":\"Tom\",\"age\":25}";
Person person = gson.fromJson(jsonStr, Person.class);
System.out.println(person.getName());
System.out.println(person.getAge());
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
运行上述程序,将输出以下内容:
Tom 25
可以看到,GSON将JSON字符串自动转换为了对应的Java对象。
三、JSON字符串中的复合结构解析
JSON字符串中除了基本类型外,还可以使用数组、对象等复合结构。以下是一个包含复合结构的JSON字符串示例:
{
"name": "Tom",
"age": 25,
"address": {
"city": "Beijing",
"street": "Chaoyang Road",
"postcode": "100101"
},
"languages": [
"Java",
"C++",
"Python"
]
}
在Java中使用GSON解析上述JSON字符串,并将数据赋值给对应的Java类,示例代码如下:
import java.util.List;
import com.google.gson.Gson;
public class MyClass {
public static void main(String[] args) {
Gson gson = new Gson();
String json = "{\"name\":\"Tom\",\"age\":25,\"address\":{\"city\":\"Beijing\",\"street\":\"Chaoyang Road\",\"postcode\":\"100101\"},\"languages\":[\"Java\",\"C++\",\"Python\"]}";
Person person = gson.fromJson(json, Person.class);
System.out.println(person.getName());
System.out.println(person.getAge());
Address address = person.getAddress();
System.out.println(address.getCity());
System.out.println(address.getStreet());
System.out.println(address.getPostcode());
List languages = person.getLanguages();
for (String language : languages) {
System.out.println(language);
}
}
}
class Person {
private String name;
private int age;
private Address address;
private List languages;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Address getAddress() {
return address;
}
public List getLanguages() {
return languages;
}
}
class Address {
private String city;
private String street;
private String postcode;
public String getCity() {
return city;
}
public String getStreet() {
return street;
}
public String getPostcode() {
return postcode;
}
}
运行上述程序,将输出以下内容:
Tom 25 Beijing Chaoyang Road 100101 Java C++ Python
可以看到,GSON自动解析了JSON字符串中的复合结构,并将数据赋值给对应的Java类。
四、解析JSON数组
在JSON中,还可以使用数组来表示一组数据。以下是一个JSON数组的示例:
[
{
"name": "Tom",
"age": 25
},
{
"name": "Jack",
"age": 30
}
]
在Java中使用GSON解析JSON数组,可以将JSON数组看作是一个数组的集合,每个数组元素可以对应一个Java对象。例如,在上述JSON数组中,每个元素都包含了一个字符串类型的“name”属性和一个整型的“age”属性,因此可以为每个元素定义一个对应的Java类。
import com.google.gson.Gson;
import java.util.List;
public class MyClass {
public static void main(String[] args) {
Gson gson = new Gson();
String json = "[{\"name\":\"Tom\",\"age\":25},{\"name\":\"Jack\",\"age\":30}]";
List persons = gson.fromJson(json, new TypeToken<List>(){}.getType());
for (Person person : persons) {
System.out.println(person.getName());
System.out.println(person.getAge());
}
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
运行上述程序,将输出以下内容:
Tom 25 Jack 30
可以看到,GSON自动解析了JSON数组中的每个元素,并将数据赋值给对应的Java类。
原创文章,作者:TKPU,如若转载,请注明出处:https://www.506064.com/n/134717.html
微信扫一扫
支付宝扫一扫