一、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
在解析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}"; Mapmap = 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还有很多高级功能可供使用,如自定义序列化和反序列化等,能有效提升开发效率。