JSON是一种轻量级的数据交换格式。它基于ECMAScript(European Computer Manufacturers Association,欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON称为理想的数据交换语言。易于人与阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON作为一种轻量级的数据格式,它主要用途是在计算机系统之间进行数据的传递。JSON作为数据传输的格式,有一下显著优点:
· JSON只允许使用 UTF-8 编码,不存在编码问题
· JSON内容仅包含 key-value 键值对,格式简单,不存在冗余结构,是一种轻量级结构;
· 浏览器内置JSON支持,如果把数据用JSON发送个浏览器,可以用 JavaScript 直接处理;
Java解析JSON
在使用Java进行应用程序的开发中,我们会面临类似“将Java对象转换成JSON格式”或者“将JSON格式的数据转换成Java对象”的需求,所以我们需要掌握如何使用第三方库来进行JSON格式数据的解析。
常用的用于解析JSON的第三方库有:
· Jackson【推荐】
· Gson
· Fastjson
· ...
Fastjsonfastjson 是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
优点:速度快:fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1x版本之后,其性能从未被其他Java实现的JSON库超越
使用广泛:fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
测试完备:fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
使用简单:fastjson的API十分简洁
功能完备:支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。
Fastjson 的主要对象fastjson 主要使用是 JSON 、JSONObject 、JSONArray 三个类。其中 JSONArray 和 JSONObject 继承 JSON:
JSON类JSON类的作用主要是用于原始转换,常用方法有:
将Java对象 "序列化"(转换)为JSON字符串:JSON . toJSONString(Object object)
如果需要自定义 json 中的 key ,可以使用 @JSONField 注解在成员变量进行设置。
// 实体数据
Weather weather = new Weather();
weather.setCity("呼和浩特");
weather.setComfort_index("天气良好");
weather.setDate_y("2022年07月14日");
// 转换为json格式的字符串
String json = JSON.toJSONString(weather);
System.out.println(json);
将JSON字符串反序列化为Java对象
JSON.parseObject(String text)
// json格式数据
String jsonStr = "{"temperature":"29℃~41℃","weather":"多云转阴","weather_id":{"fa":"01","fb":"02"},"wind":"东北风微风","week":"星期日","city":"西安","date_y":"2022年07月10日","dressing_index":"炎热","dressing_advice":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","uv_index":"中等","comfort_index":"","wash_index":"较适宜","travel_index":"较不宜","exercise_index":"较不宜","drying_index":""}";
// 转换成JSONObject
JSONObject jsonObj = JSON.parseObject(jsonStr);
System.out.println("日期:" + jsonObj.getString("date_y"));
System.out.println("天气:" + jsonObj.getString("weather"));
System.out.println("温度:" + jsonObj.getString("temperature"));
JSON.parseArray(String text)
// 转换成JSONArray JSONArray jsonArray = JSON.parseArray(jsonStr); // 遍历JSONArray for(int i =0 ; i将JSON格式的数据,转换成指定的自定义实体类对象
JSON.parseObject(String text,Class
clazz) // 转换成实体对象 Weather weather = JSON.parseObject(jsonStr, Weather.class); System.out.println("日期:" + weather.getDate_y()); System.out.println("天气:" + weather.getWeather()); System.out.println("温度:" + weather.getTemperature());JSONArray类
JSONArray 类主要用于封装数组集合类的数据,他继承自 ArrayList 类。
将JSON格式的数据,转换成指定的泛型集合。
JSON.parseArray(String text, Class
clazz) List暑期编程PK赛 得CSDN机械键盘等精美礼品!stationList = JSON.parseArray(jsonStr, PoliceStation.class); for(PoliceStation ps : stationList) { System.out.println("名称:" + ps.getName()); System.out.println("地址:" + ps.getAddress()); System.out.println("电话:" + ps.getTelephone()); }



