在進行 Android 開發時,我們常常需要從服務器接收來自 web API 的數據。一般情況下我們獲取到的數據都是 Json 的數據格式。而在 Android 開發中,我們通常使用 Gson 讓我們更容易的解析 Json 數據,并將解析之后的數據映射到自定義 Java 對象上來使用。
{ "id": 1, "name": "Apple", "price": 1.0, "description": { "short": "A fruit", "long": "An apple is a sweet, edible fruit produced by an apple tree." }, "comments": [ { "author": "Bob", "content": "I love Apples" }, { "author": "Jane", "content": "Apple pie is my favorite dessert" } ] }
對于以上樣例數據,我們可以將其轉換為一個 Java 對象,并對其進行操作。
public class Fruit { @SerializedName("id") private int id; @SerializedName("name") private String name; @SerializedName("price") private float price; @SerializedName("description") private Description description; @SerializedName("comments") private Listcomments; // getters and setters } public class Description { @SerializedName("short") private String shortDescription; @SerializedName("long") private String longDescription; // getters and setters } public class Comment { @SerializedName("author") private String author; @SerializedName("content") private String content; // getters and setters }
在以上代碼中, @SerializedName 注解用來說明 Json 數據中與 Java 對象中屬性的映射關系。如果 Json 數據的屬性名和 Java 對象的屬性名一致,則可以省略該注解。
解析 Json 數據并將其映射為 Java 對象的過程可以通過以下代碼實現:
String jsonString = "sample json data"; Gson gson = new Gson(); Fruit fruit = gson.fromJson(jsonString, Fruit.class);
注意,當我們解析 Json 數據時,我們需要在代碼中指定要映射到的 Java 類型。在解析json字符串時,我們也可以通過 GsonBuilder 來進行配置。
通過 Gson 解析 Json 可以大大簡化我們在 Android 應用程序中使用 web API 數據的過程,同時使代碼更簡潔、更清晰。