一、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/zh-tw/n/134717.html
微信掃一掃
支付寶掃一掃