前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastJson 介绍

FastJson 介绍

作者头像
Carlos Ouyang
发布2019-08-19 17:34:10
1.2K0
发布2019-08-19 17:34:10
举报
文章被收录于专栏:Java 学习日记Java 学习日记

Json详解

Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。在使用 Java 做 Web 开发时,不可避免的会遇到 Json 的使用。

JSON形式与语法

我们先来看以下数据:

代码语言:javascript
复制
{
    "ID": "1001",
    "name": "张三",
    "age": "24"
}

观察它的数据形式,可以得出以下语法:

  1. 数据在花括号中
  2. 数据以键:值对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他 json 对象)
  3. 每两个键:值对以逗号分隔(最后一个键:值对省略逗号)

遵守上面3点,便可以形成一个json对象。

JSON对象数组

接下来我们再看第二个数据:

代码语言:javascript
复制
[
    {"ID": 1001, "name": "张三", "age": 24},
    {"ID": 1002, "name": "李四", "age": 25},
    {"ID": 1003, "name": "王五", "age": 22}
]

观察它的数据形式,可以得出以下语法:

  1. 数据在方括号中(可理解为数组)
  2. 方括号中每个数据以 json 对象形式出现
  3. 每两个数据以逗号分隔(最后一个无需逗号)

遵守上面3点,便可形成一个 json 对象数组(及一个数组中,存储了多个 json 对象)

理解了上面两种基本的形式,我们就可以得出其他的数据形式,例如下面这个:

代码语言:javascript
复制
{
    "部门名称":"研发部",
    "部门成员":[
    {"ID": 1001, "name": "张三", "age": 24},
    {"ID": 1002, "name": "李四", "age": 25},
    {"ID": 1003, "name": "王五", "age": 22}],
    "部门位置":"xx楼21号"
}

这是上面两个基本形式结合出来的一种变形,通过这种变形,使得数据的封装具有很大的灵活性,能让开发者自由的发挥想象力。

总结:json 可以简单的分为基本形式:json 对象,json 对象数组。两种基本格式组合变形出其他的形式,但其本质还是 json 对象或者 json 对象数组中的一种。json 对象或对象数组可以转化为 json 字符串,使用于不同的场合。

FastJson

介绍

JSON 协议使用方便,越来越流行,JSON 的处理器有很多,这里我介绍一下FastJson,FastJson 是阿里的开源框架,被不少企业使用,是一个极其优秀的 Json 框架,Github 地址: FastJson。

FastJson的特点

  1. FastJson数度快,无论序列化和反序列化,都是当之无愧的fast
  2. 功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
  3. 零依赖(没有依赖其它任何类库)

Fastjson中的经常调用的方法

  • parse(String text);: 把JSON文本parse为JSONObject或者JSONArray
  • parseObject(String text);: 把JSON文本parse成JSONObject
  • parseArray(String text);: 把JSON文本parse成JSONArray
  • toJSONString(Object object);: 将JavaBean序列化为JSON文本

实例

服务器接收请求数据,发送 JSON 回浏览器,并根据不同的请求方式,分别解决中文乱码问题:

代码语言:javascript
复制
 1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         request.setCharacterEncoding("utf-8");
 3         response.setCharacterEncoding("utf-8");
 4         response.setContentType("text/json;charset=utf-8");
 5         //允许所有IP地址和端口请求
 6         response.setHeader("Access-Control-Allow-Origin", "*"); 
 7         //允许所有的文档类型请求 
 8         response.setHeader("Access-Control-Content-Type", "*"); 
 9         HashMap<String, String> map = new HashMap<String, String>();
10         map.put("user", new String(request.getParameter("user").getBytes("ISO-8859-1"),"utf-8"));
11         map.put("psw", new String(request.getParameter("psw").getBytes("ISO-8859-1"),"utf-8"));
12         System.out.println(new String(request.getParameter("user").getBytes("ISO-8859-1"),"utf-8"));
13         String jsonString = JSON.toJSONString(map);
14         response.getWriter().println(jsonString);
15     }
16 
17     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");
18         request.setCharacterEncoding("utf-8");
19         response.setCharacterEncoding("utf-8");
20         response.setContentType("text/json;charset=utf-8");
21         //允许所有IP地址和端口请求
22         response.setHeader("Access-Control-Allow-Origin", "*"); 
23         //允许所有的文档类型请求 
24         response.setHeader("Access-Control-Content-Type", "*"); 
25         HashMap<String, String> map = new HashMap<String, String>();
26         map.put("user", request.getParameter("user"));
27         map.put("psw", request.getParameter("psw"));
28         System.out.println(request.getParameter("user"));
29         String jsonString = JSON.toJSONString(map);
30         response.getWriter().println(jsonString);
31     }

服务器接收 JSON 并取出数据发回浏览器:

浏览器:

代码语言:javascript
复制
 1 $.ajax({
 2     url: 'http://localhost:8080/RequestNResponse/GetJSON',
 3     method: 'GET',
 4     data: {
 5         json:
 6         `{
 7             "username": "张三",
 8             "age": 23,
 9             "hobby":["篮球","足球","羽毛球"]
10         }`
11     },
12     complete: function (res) {
13         console.log(res)
14         $('body').append(`<h1>${res.responseText}</h1>`)
15     }
16 })

服务器:

代码语言:javascript
复制
 1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         request.setCharacterEncoding("utf-8");
 3         response.setCharacterEncoding("utf-8");
 4         response.setContentType("text/html;charset=utf-8");
 5         //允许所有IP地址和端口请求
 6         response.setHeader("Access-Control-Allow-Origin", "*"); 
 7         //允许所有的文档类型请求 
 8         response.setHeader("Access-Control-Content-Type", "*"); 
 9         String jsonStr = new String(request.getParameter("json").getBytes("ISO-8859-1"), "utf-8");
10         JSONObject object = JSON.parseObject(jsonStr);
11         response.getWriter().println("username:" + object.get("username"));
12         response.getWriter().println("username:" + object.get("age"));
13         JSONArray hobbies = (JSONArray) object.get("hobby");
14         hobbies.forEach(obj -> {
15             try {
16                 response.getWriter().println(obj);
17             } catch (IOException e) {
18                 // TODO Auto-generated catch block
19                 e.printStackTrace();
20             }
21         });
22     }
23 
24     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
25         request.setCharacterEncoding("utf-8");
26         response.setCharacterEncoding("utf-8");
27         response.setContentType("text/html;charset=utf-8");
28         //允许所有IP地址和端口请求
29         response.setHeader("Access-Control-Allow-Origin", "*"); 
30         //允许所有的文档类型请求 
31         response.setHeader("Access-Control-Content-Type", "*"); 
32         String jsonStr = request.getParameter("json");
33         JSONObject object = JSON.parseObject(jsonStr);
34         response.getWriter().println("username:" + object.get("username"));
35         response.getWriter().println("username:" + object.get("age"));
36         JSONArray hobbies = (JSONArray) object.get("hobby");
37         hobbies.forEach(obj -> {
38             try {
39                 response.getWriter().println(obj);
40             } catch (IOException e) {
41                 // TODO Auto-generated catch block
42                 e.printStackTrace();
43             }
44         });
45     }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Json详解
    • JSON形式与语法
      • JSON对象数组
      • FastJson
        • 介绍
          • FastJson的特点
            • Fastjson中的经常调用的方法
              • 实例
              相关产品与服务
              文件存储
              文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档