天天看點

一起Talk Android吧(第三百五十四回:Gson庫解析JSON數組二)

各位看官們,大家好,上一回中咱們說的是Android中Gson庫解析JSON數組的例子,這一回中咱們繼續介紹該例子。閑話休提,言歸正轉。讓我們一起Talk Android吧!

看官們,我們在本章回中繼續介紹如何使用Gson庫解析JSON數組,不過JSON數組和上一章回中的不同:上一章回中介紹的數組隻包含JSON對象,本章回中介紹的JSON數組包含标量和JSON對象。

步驟與示例

接下來我們介紹如何使用Gson庫解析JSON數組中的标量,标量需要單獨拿出來解析,解析的方法和解析JSON對象的方法相同,隻是标量的類型為Java的包裝類,而不是自定義的JavaBean類。下面是兩個解析示例,請大家參考:

String javaObj = gsonObj.fromJson("id",String.class);
Integer integerObj = gsonObj.fromJson(String.valueOf(36),Integer.class);
           

示例中解析的标量類型是String和Integer,注意它們是類類型,不能是基本類型。

我們可以對JSON數組中的單個标量進行解析,但是JSON數組中包含标量和其它類型的成員(比如JSON對象或者JSON數組)時,我們不能使用Gson庫解析這種混合類型的JSON數組.

原理分析

有看官說,為什麼不能混合在一起解析,因為它們混合在一起不是有效的JSON資料,或者說這種JSON數組不符合JSON文法規則。如何确認JSON資料是否符合文法規則?可以使用

GsonFormat

插件,如果GsonFormat插件無法生成JavaBean類,那麼說明此JSON資料不符合JSON文法。

其實,我們在前面章回中使用Java原生的方法解析過這種JSON資料,當時主要是為了介紹如何解析标量而特意在JSON數組中添加了标量,在實際的項目中很少會有這樣的JSON數組。如果實際項目中确實有這樣的JSON資料,可以讓伺服器端修改資料類型,或者不修改伺服器端(可能修改成本高)而是使用原生的方式解析JSON數組,這也是我們在前面章回中介紹使用Java原生方法解析JSON資料的原因,因為Gson庫無法解析這種不符合文法規則的JSON數組。

此外,在分享一些項目經驗:如果Gson庫解析資料時抛出了類型不比對的異常,那麼需要檢查JSON資料的類型,如果JSON資料的類型不符合文法規則,那麼隻能放棄Gson庫,轉而使用Java原生的解析方法去解析這些特殊的JSON資料。

看官們,關于Android中Gson庫解析JSON數組的例子咱們就介紹到這裡,欲知後面還有什麼例子,且聽下回分解!