一、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
微信掃一掃
支付寶掃一掃