一、json對象轉json字符串null
當我們的json數據為null時,直接使用toJson方法不能得到我們想要的結果。傳統的做法可能是通過判斷null並手動賦值為”null”,但這種方法不夠優雅且易錯。Gson提供了一個專門轉換null的方法nullSafe(),具體使用如下:
String json = gson.toJson(null); //輸出結果為null String jsonSafe = gson.toJson(null, Object.class).nullSafe(); //輸出結果為"null"
可以看到,通過nullSafe()方法可以避免手動處理null值的繁瑣,提高開發效率。
二、gson map轉json字符串
通常我們會收到一些json格式的字符串,而這些數據很可能是以map的形式組織的。在這種情況下,我們需要將map轉換成json格式字符串。這個過程非常簡單,只需要調用gson.toJson()方法即可:
Map<String, Object> map = new HashMap<>(); map.put("name", "張三"); map.put("age", 18); String json = gson.toJson(map); //輸出結果為{"name":"張三","age":18}
三、json對象轉字符串
在開發過程中,我們往往需要將一個java對象轉換成json對象。這時候,我們可以採用如下代碼:
class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } } Student stu = new Student("張三", 18); String jsonStr = gson.toJson(stu); //輸出結果為{"name":"張三","age":18}
可以看到,我們只需要編寫一個類,將實際需轉換的數據放在類中,調用toJson()方法即可。
四、json字符串轉json對象
在開發過程中,我們也會需要將字符串類型的json數據轉換成json對象。這時候,我們可以採用如下代碼:
String jsonStr = "{\"name\":\"張三\",\"age\":18}"; JsonElement jsonElement = new JsonParser().parse(jsonStr); JsonObject jsonObj = jsonElement.getAsJsonObject(); System.out.println(jsonObj.get("name").getAsString());//輸出結果為"張三" System.out.println(jsonObj.get("age").getAsInt());//輸出結果為18
JsonParser類能夠將json字符串轉換成JsonElement對象。JsonElement對象可被轉換成不同的json對象。在本例中,我們使用getAsJsonObject()方法將JsonElement對象轉換成JsonObject對象,便可以從中取出實際的值了。
五、json對象轉成json字符串
在反過來,也需要將json對象轉成json字符串。可以使用 Gson 的 toJson 方法將一個對象轉化為 JSON 格式的字符串。
JsonObject obj = new JsonObject(); obj.addProperty("name", "張三"); obj.addProperty("age", 25); String jsonStr = gson.toJson(obj); //輸出結果為{"name":"張三","age":25}
六、json字符串轉map對象
將json字符串轉換為map對象也是非常常見的操作。我們可以使用如下代碼實現:
String jsonStr = "{\"name\":\"張三\",\"age\":18}"; Type type = new TypeToken<Map<String, Object>>(){}.getType(); Map<String, Object> map = gson.fromJson(jsonStr, type); System.out.println(map.get("name"));//輸出結果為"張三" System.out.println(map.get("age"));//輸出結果為18
需要注意的是,為了讓Gson能夠將JSON字符串正確的轉換成Map,我們需要顯式的定義TypeToken類型,否則Gson會將map的值轉換成String類型而不是原本的數據類型。
七、gson list轉json字符串
除了map,list也是非常普遍的數據類型。我們採用如下代碼將list轉換成json字符串:
List<String> list = new ArrayList<>(); list.add("張三"); list.add("李四"); String jsonStr = gson.toJson(list); //輸出結果為["張三","李四"]
同樣不需要在toJson方法中再指定需要轉換的數據類型,Gson已經自動處理好了。
八、gson解析json字符串為對象
反過來,我們需要將json字符串轉換成java對象。如果是簡單的類型,可以通過fromJson方法直接解析成對象:
String jsonStr = "{\"name\":\"張三\",\"age\":18}"; Student stu = gson.fromJson(jsonStr, Student.class); System.out.println(stu.getName());//輸出結果為"張三"
需要注意的是,fromJson方法中第二個參數是需要轉換的數據類型,這裡傳入的是Student.class。這樣就能夠快速的將json字符串轉換成java對象。
九、json字符串轉對象
在python中,有類似於Java中Gson的庫處理json數據,如何將python中的json字符串轉換成java對象呢?下面是一個案例:
String jsonStr = "{\"name\":\"張三\",\"age\":18}"; JsonElement jsonElement = new JsonParser().parse(jsonStr); Map<String, Object> map = gson.fromJson(jsonElement, new TypeToken<Map<String, Object>>(){}.getType()); Student stu = new Student((String) map.get("name"), (int)map.get("age")); System.out.println(stu.getName());//輸出結果為"張三"
需要注意的是,我們需要使用JsonPaser將json字符串轉化為JsonElement類型,再使用getType()定義數據類型,才能成功地轉化成map對象。
原創文章,作者:VMBHD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/369028.html