首页 > 其他分享 >Json

Json

时间:2022-08-25 18:44:36浏览次数:112  
标签:name 23 对象 JSON json Json var

1. 概述

  1. 概念:JavaScript Object Notation(JavaScript 对象表示法)。JSON和JS对象的格式一样,它使用JS语法,只不过JSON字符串中的属性名必须加双引号。
  2. json现在多用于存储和交换文本信息的语法
  3. 进行数据的传输,通常用于服务端向网页传递数据
  4. json比XML更小,更快,更易解析

2. 语法

  1. 数据为键/值对,json中允许的值有字符串,数值,布尔值,null,对象,数组。
示例:
"name":"张三"
  1. 数据由逗号分隔。
  2. 大括号{}保存JSON对象。
{"name":"张三","age":23}
  1. 方括号[]保存数组。
示例:一个数组employees
"employees":[        
    {"firstName":"John", "lastName":"Doe"},        
    {"firstName":"Anna", "lastName":"Smith"},     
    {"firstName":"Peter", "lastName":"Jones"}        
]
  1. 数组中可以嵌套对象
"employees":[        
    {"firstName":"John", "lastName":"Doe"},        
    {"firstName":"Anna", "lastName":"Smith"},     
    {"firstName":"Peter", "lastName":"Jones"}        
]
  1. 对象中嵌套数组
  2. json的遍历

3.JSON对象和Java对象的相互转换

1.常见的JSON解析器
  1. JsonLib
  2. Gson
  3. fastjson
  4. jackson

这里使用jackson这个JSON解析器,一个用来序列化和反序列化 json 的 Java 的开源框架

2.JSON反序列化为Java对象
3.Java对象序列化为JSON字符串
  1. jackson使用步骤
1. 导入jackson的相关jar包
2. 创建jackson的核心对象ObjectMapper
3. 调用其相关方法进行转换

示例:
Student student = new Student(1, "张三", 23);
ObjectMapper objectMapper = new ObjectMapper();
String value = objectMapper.writeValueAsString(student);
System.out.println(value);
// {"id":1,"name":"张三","age":23}
4.在前端页面中将服务器端返回的json格式字符串转为json对象
var jsonObj = eval("("+xmlHttp.responseText+")");
5.案例:校验用户名是否存在

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
    <script src="js/jquery-3.5.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        // 在页面加载完成后
        $(function () {
            // 给username绑定blur事件
            // blur表示失去焦点(光标离开)执行的函数
            $("#username").blur(function () {
                // 获取username文本输入框的值
                var username = $(this).val();
                // 发送ajax请求
                // 期望从服务器响应回的数据格式:
                // {"userExsit":true,"msg":"此用户名太受欢迎,请更换一个"}
                // {"userExsit":false,"msg":"用户名可用"}
                $.get("queryUserServlet", {username:username}, function (data) {
                    // 现在的data为一个json对象
                    var span = $("#warning");
                    if (data.userExsit) {
                        // 用户名存在
                        span.css("color","red");
                        span.html(data.msg);
                    } else {
                        // 用户名不存在
                        span.css("color", "green");
                        span.html(data.msg)
                    }
                })

            })
        })
    </script>
</head>
<body>
  <form>
      <input id="username" type="text" name="username" placeholder="请输入用户名"/>
      <span id="warning"></span>
      <br/>
      <input type="text" name="password" placeholder="请输入密码"/><br/>
      <input type="submit" value="注册"/><br/>
  </form>
</body>
</html>

@WebServlet(value = "/queryUserServlet")
public class queryUserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置响应的数据格式为json
        resp.setContentType("application/json;charset=utf-8");
        // 获取用户名
        String username = req.getParameter("username");
        // 调用service层判断用户名是否存在
        Map<String, Object> map = new HashMap<>();
        if ("tom".equals(username)) {
            // 存在
            map.put("userExsit", true);
            map.put("msg", "此用户名太受欢迎,请更换一个");
        } else {
            // 不存在
            map.put("userExsit", false);
            map.put("msg", "用户名可用");
        }
        // 将map转为json,并且传递给客户端
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.writeValue(resp.getWriter(), map);
    }
}

image.png

注意的问题:

  1. 服务器响应的数据,在客户端使用时,要想当作json数据格式使用,有两种方式:
1. 在客户端获取数据时,$.get()中的参数type指定为"json"
2. 在服务端设置MIME类型
response.setContentType("application/json;charset=utf-8");

4.JSON字符串与JavaScript对象的相互转化

  1. JSON字符串转化为JS对象:使用内置函数JSON.parse(一个JSON格式的字符串)
var text = '{"person":['+
	'{"name":"张三","age":23},'+
	'{"name":"李四","age":25}'+
	']}';
console.log(text);
var obj = JSON.parse(text);
console.log(obj.person[1].name);// 李四

var text1 = '["Hi", 123, true]';
var o = JSON.parse(text1);
console.log(o[2]);	//true
  1. JS对象转为JSON字符串:使用内置函数JSON.stringify(一个JS对象)
var object = {"name":"张三","age":23};
var str = JSON.stringify(object);
console.log(typeof(str));//string
console.log(str);//{"name":"张三","age":23}

// JSON对象在低版本的IE浏览器中不支持
// 使用eval函数将JSON字符串转为JS对象,开发中不推荐使用
var str = '{"name":"张三","age":23}';
var object = eval("(" + str +")");
console.log(object);//{name: "张三", age: 23}
console.log(object.age);//23

标签:name,23,对象,JSON,json,Json,var
From: https://www.cnblogs.com/xiaocer/p/16625362.html

相关文章

  • 6. json--注释
    1.前言JSON是一种纯粹的数据交换格式,其简单、灵活的特性使得JSON适合被用于各种不同的场景,例如在配置文件中、在接口返回的数据中都会用到JSON格式。然而JSON却有......
  • python json用法 dump和dumps的区别;loads()和load()的区别
    json常用方法方法作用json.dumps()将python对象编码成Json字符串json.loads()将Json字符串解码成python对象json.dump()将python中的对象转化成json储存到......
  • 5. json--数组
    1.前言数组是值的有序集合,JSON中的数组与JavaScript中的数组相似,同样需要使用方括号[]定义,方括号中为数组中的若干值,值可以是JSON中支持的任意类型(例如字符串、数字......
  • 2. json语法规则
    1.前言JSON的语法与JavaScript中的对象很像,在JSON中主要使用以下两种方式来表示数据:Object(对象):键/值对(名称/值)的集合,使用花括号{}定义。在每个键/值对中,以键开头......
  • 学会了JsonPath,你的Python接口脚本才算完整
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试01Jsonpat......
  • 前端解决跨域问题的方法:jsonp
    同源策略同源策略/SOP(Sameoriginpolicy)是一种约定,是浏览器最核心也最基本的安全功能,现在所有支持JavaScript的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容......
  • curl 返回json 并格式化
    应用curlhttp://url/path|python-mjson.tool例子curl'http://localhost:9090/api/v1/targets?state=active'|python-mjson.tool%Total%Received%X......
  • mysql增删改查json中的某个字段
    创建表1CREATETABLEt_json(idINTPRIMARYKEY,NAMEVARCHAR(20),infoJSON);插入记录1INSERTINTOt_json(id,sname,info)VALUES(1,'test','{"time":"20......
  • JSONP及Axios
    JSONP及Axios一、jsonp1、概述概述:JSONP是一种跨域解决方案,它主要是利用了script标签不受跨域影响的特性来完成对应的请求操作。实际上是一个get请求。2、什么叫跨域(1......
  • 记C# 通过JObject 读取 json对象(Newtonsoft.Json.Linq.JObject.this[string].get 返回
    json对象"RequestHeaders":{ "Host":"tool.kkbmtj.com", "Referer":"https://m.kkbmtj.com/ys/shortindex?origin=kktj&xcx", }代码:HeaderLogheaderLog......