一、fastjson解析json文件
String json = "{\"name\":\"Jack\", \"age\":18}"; JSONObject jsonObject = JSON.parseObject(json); String name = jsonObject.getString("name"); int age = jsonObject.getIntValue("age"); System.out.println(name + ", " + age); //輸出 Jack, 18
我們首先需要將json字符串轉換成JSONObject對象,然後通過getString和getIntValue等方法獲取對應的值。
二、fastjson底層如何解析
Fastjson會將json字符串解析成一個樹狀結構的數據,每個節點都是JSON對象或JSON數組。通過遞歸遍歷樹狀結構,fastjson就能將json字符串解析成一個java對象。
三、fastjson解析json數組
String json = "[{\"name\":\"Jack\", \"age\":18}, {\"name\":\"Tom\", \"age\":20}]"; JSONArray jsonArray = JSON.parseArray(json); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String name = jsonObject.getString("name"); int age = jsonObject.getIntValue("age"); System.out.println(name + ", " + age); }
解析json數組跟解析json對象類似,需要先通過JSON.parseArray將json字符串轉換成JSONArray對象。然後可以通過循環遍歷獲取每個JSON對象,再通過getString和getIntValue等方法獲取對應的值。
四、fastjson解析json整數最大值
String json = "{\"num\":2147483647}"; JSONObject jsonObject = JSON.parseObject(json); int num = jsonObject.getIntValue("num"); System.out.println(num); //輸出 2147483647
在fastjson中,如果json中的整數值超過了Java中int的最大值,fastjson會自動將其解析為long類型。
五、fastjson解析json字符串轉成map
String json = "{\"name\":\"Jack\", \"age\":18}"; TypeReference<Map> typeReference = new TypeReference<Map>(){}; Map map = JSON.parseObject(json, typeReference); String name = (String) map.get("name"); int age = (int) map.get("age"); System.out.println(name + ", " + age); //輸出 Jack, 18
在解析json字符串時,我們也可以將其轉換成Java的Map對象。這裡我們需要使用TypeReference類指定map的key和value的類型。
六、fastjson解析json字符串
String json = "{\"name\":\"Jack\", \"age\":18}"; User user = JSON.parseObject(json, User.class); System.out.println(user.getName() + ", " + user.getAge()); //輸出 Jack, 18
我們也可以將json字符串直接轉換成Java對象,此時需要制定目標對象的類型。Java對象中的屬性名稱需要跟json中的屬性名稱一致。
七、fastjson解析json字符串轉成map
String json = "{\"name\":\"Jack\", \"age\":18}"; Map map = JSON.parseObject(json); String name = (String) map.get("name"); int age = map.getIntValue("age"); System.out.println(name + ", " + age); //輸出 Jack, 18
跟解析json對象類似,我們也可以將json字符串轉換成map對象,然後通過get和getIntValue等方法獲取對應的值。
八、FastJson解析json丟字段
有時候,在解析json字符串時,我們可能只需要其中的部分字段,而其他的字段可以忽略。這時我們可以使用Feature.IgnoreNotMatch參數,告訴fastjson忽略不存在的字段:
String json = "{\"name\":\"Jack\", \"age\":18}"; ParserConfig config = new ParserConfig(); config.setFieldBased(true); JSONObject jsonObject = JSON.parseObject(json, config, Feature.IgnoreNotMatch); String name = jsonObject.getString("name"); System.out.println(name); //輸出 Jack
九、fastjson反序列化
fastjson還支持反序列化,即Java對象轉換成json字符串。這可以通過toJSONString方法實現:
User user = new User("Jack", 18); String json = JSON.toJSONString(user); System.out.println(json); //輸出 {"name":"Jack","age":18}
以上是對fastjson解析json的一些基礎應用,除此之外,fastjson還有很多高級功能可供使用,如自定義序列化和反序列化等,能有效提升開發效率。
原創文章,作者:GUVND,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/324530.html