Json資料解析與轉換 -- Java使用示例
阿新 • • 發佈:2021-06-13
概要
json是前後臺互動常用的資料格式,在java後臺中經常需要實現java bean、list和json字串的相互轉化,故簡單介紹不同框架的使用,提供簡單工具類。
在Java中,常見的json框架有:Jackson(springboot預設)、fastjson(阿里開源)、Gson(谷歌開源)。網路有它們的效能對比研究,此處不做討論,根據自己習慣來選擇即可。
json的資料結構包括:{}、[],等同於java的物件、陣列。兩者相互組合,就能夠表達很複雜的資料結構了。
使用
Fastjon
- 新增Maven依賴,可從https://github.com/alibaba/fastjson獲取。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.61</version> </dependency>
- 使用示例,主要物件是 JSON、JSONArray、JSONObject
public void fastJsonTest() { //資料示例 List list = Arrays.asList("Banana","apple","Orange"); String obj = "{\"id\":1001,\"age\":12}"; Person p = new Person(1001,12,"David"); //java物件 ==> json字串,json物件 String str = JSON.toJSONString(p); JSONObject jsonObj1 = (JSONObject) JSON.toJSON(p); //json字串 ==> json物件、Java物件 Person p1 = JSON.parseObject(obj, Person.class); JSONObject jsonObj2 = JSON.parseObject(obj); //json物件 ==> java物件 Person p2 = JSON.toJavaObject(jsonObj2, Person.class); //陣列處理 JSONArray json = (JSONArray)JSON.toJSON(list); String jsonStr = String.valueOf(JSON.toJSON(json)); }
Jackson
- 新增Maven依賴,SpringBoot中預設引入,無需額外操作。包括三個jar包:jackson-databind、jackson-core、jackson-annotations
- 使用示例,注意異常處理
public void jacksonDemo() throws IOException { //資料示例 User user = new User("001","David","xxx",12); Map<String,Object> map = new HashMap<String,Object>(); map.put("A1", user); map.put("A2", new ArrayList<String>()); //建立ObjectMapper物件 ObjectMapper mapper = new ObjectMapper(); //Java物件 ==> json字串 String jsonStr1 = mapper.writeValueAsString(user); String jsonStr2 = mapper.writeValueAsString(map); //json字串 ==> Java物件 User u = mapper.readValue(jsonStr1, User.class); Map m = mapper.readValue(jsonStr2, Map.class); }
Gson
-
新增Maven依賴,可從 https://github.com/google/gson 獲取
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.7</version> </dependency>
-
使用示例
public void gsonDemo() { //示例資料 User user = new User("kevin",22,new Date(),Arrays.asList("aa","bb","cc")); List list = Arrays.asList("Banana","apple","Orange"); //建立gson物件 Gson gson = new Gson(); //Java物件 ==> json字串 String s1 = gson.toJson(list); String s2 = gson.toJson(user); //json字串 ==> Java物件 gson.fromJson(s1, List.class); gson.fromJson(s2, User.class); }