在進(jìn)行 Android 開發(fā)中,經(jīng)常會(huì)用到 Gson 解析 JSON 數(shù)據(jù)。Gson 是 Google 提供的一個(gè) JSON 解析庫(kù),可以將 JSON 數(shù)據(jù)轉(zhuǎn)成 Java 對(duì)象或?qū)?Java 對(duì)象轉(zhuǎn)成 JSON 數(shù)據(jù)。
在使用 Gson 解析 JSON 數(shù)據(jù)時(shí),有時(shí)候需要根據(jù) JSON 中 value 的類型來(lái)做出不同的邏輯判斷。下面是一個(gè)示例 JSON 數(shù)據(jù):
{ "name": "張三", "age": 18, "isMale": true, "hobbies": ["籃球", "游泳", "唱歌"], "address": { "city": "北京", "street": "朝陽(yáng)路" } }
如果需要判斷 hobbies 中是否包含某個(gè)字符串,可以這樣寫:
JsonObject jsonObject = new JsonObject(); JsonArray jsonArray = jsonObject.getAsJsonArray("hobbies"); for (JsonElement jsonElement : jsonArray) { String hobby = jsonElement.getAsString(); if (hobby.equals("唱歌")) { // 做對(duì)應(yīng)操作 } }
如果需要判斷 age 是否大于等于 18,可以這樣寫:
JsonObject jsonObject = new JsonObject(); JsonPrimitive jsonPrimitive = jsonObject.getAsJsonPrimitive("age"); int age = jsonPrimitive.getAsInt(); if (age >= 18) { // 做對(duì)應(yīng)操作 }
在上面的代碼中,getAsJsonArray、getAsJsonPrimitive 方法可以將 JSON 中 value 的類型轉(zhuǎn)成對(duì)應(yīng)的 Java 類型。如果對(duì)應(yīng)類型不匹配,會(huì)拋出 JsonSyntaxException 異常。
除了以上兩種類型,Gson 還支持其他一些數(shù)據(jù)類型,如 JsonObject、JsonNull、JsonBoolean 等。在使用 Gson 解析 JSON 數(shù)據(jù)時(shí),可以根據(jù)需要選擇不同的方法來(lái)獲取 JSON 中 value 的類型,并且可以根據(jù) value 的類型做出不同的邏輯判斷。