JSON的详细介绍

本文主要详细介绍一下JSON,平时在工作中使用JSON感觉使用是没有问题的,但总是感觉在对JSON上的理解还是缺少点,不能做到得心应手,所以写此文对JSON做一定的总结,后续在工作中使用JSON还会持续补充。

1.JSON具有的形式

对象(object) 是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
对象
  数组(array) 是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
数组
  值(value) 可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
值
  字符串(string) 是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。JSON的字符串(string)与C或者Java的字符串非常相似。
字符串
  数值(number) 也与C或者Java的数值非常相似。只是JSON的数值没有使用八进制与十六进制格式。
数值
  同时,可以在任意标记之间添加空白。

2.map转jsonObject

在Java中进行前后端分离开发时,如果前端传递的数据是放在HttpServletRequest请求体中,可以用如下方法将request请求体中的信息解析成jsonObject,然后再进行数据处理。

com.alibaba.fastjson.JSONObject jsonObject = mapToJSONObj(request);

private com.alibaba.fastjson.JSONObject mapToJSONObj(ServletRequest request) {
        com.alibaba.fastjson.JSONObject jsonObj = new com.alibaba.fastjson.JSONObject();
        Map<String, String[]> map2 = request.getParameterMap();
        for (String key : map2.keySet()) {
            if (map2.get(key) == null || map2.get(key).length == 0) {
                jsonObj.put(key, null);
            } else {
                try {
                    String value = URLDecoder.decode(map2.get(key)[0], "utf-8");
                    jsonObj.put(key, value);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return jsonObj;
    }

3.Json字符串使用时加反斜线转义

//如下代码报错:json字符串里边“需要加反斜线转义
private static final String JSON_OBJ_STR = "{"studentName":"lily","studentAge":12}";
//如下代码不报错:json字符串转义后可以使用
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";

(1)字符串转义可以使用工具进行转义,工具连接
(2)字符串转义,如果使用的是idea进行开发,不需要转义工具,idea可以进行自动转义,eclipse不具备该功能

4.@RequestBody

(1)@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)。
  (2)GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
  (3)在后端的同一个接收方法里,@RequestBody 与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

@RequestMapping("mytest0")
public String myTestController0(@RequestBody String jsonString) {
	System.out.println(jsonString);
	return jsonString;
}

5.JSON工具链接

JSON格式化工具
JSON转义工具
JSON搜索工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值