一、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