gson是一個用于解析json數據的java庫。通常情況下,我們使用gson解析json數據的時候,都需要將json數據轉化為java對象。但是有時候,我們會遇到需要解析json數據中的map類型的數據的情況。這時,我們可以使用gson中的TypeToken來解決這個問題。
Gson gson = new Gson(); String json = "{\"name\":\"Tom\",\"age\":18,\"email\":\"tom@test.com\"," + "\"additionalInfo\":{\"address\":\"China\",\"phone\":\"123456789\"}}"; //使用TypeToken將additionalInfo轉化為Map類型的對象 Type type = new TypeToken<Map<String, String>>(){}.getType(); Map<String, String> additionalInfo = gson.fromJson(json, type); String address = additionalInfo.get("address"); String phone = additionalInfo.get("phone");
在上面的代碼中,我們首先創建了一個gson對象,并且定義了一個包含map類型數據的json字符串。接著,我們使用TypeToken將additionalInfo轉化為Map類型的對象。這里需要注意的是,TypeToken的泛型參數使用了匿名內部類的形式來定義,這是由于泛型在運行時會被擦除的原因所導致的。
最后,我們使用gson的fromJson方法將json字符串解析為Map類型的對象,并且獲取到其中的address和phone的值。這樣,我們就成功地使用gson來解析了json數據中的map類型數據。