随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

简介:

JavaScript中执行json的函数是eval()(注意:在使用的时候eval("(" + json字符串 + ")") 两边要加括号)

但是值得注意的是eval()方法是危险的,可以使用Function()来代替;

JSON: JavaScript Object Notation(JavaScript 对象标记法)。

JSON 是一种存储和交换数据的语法。

JSON 是通过 JavaScript 对象标记法书写的文本。

交换数据

当数据在浏览器与服务器之间进行交换时,这些数据只能是文本。

JSON 属于文本,并且我们能够把任何 JavaScript 对象转换为 JSON,然后将 JSON 发送到服务器。

我们也能把从服务器接收到的任何 JSON 转换为 JavaScript 对象。

以这样的方式,我们能够把数据作为 JavaScript 对象来处理,无需复杂的解析和转译。

JSON 值

在 JSON 中,值必须是以下数据类型之一:

  • 字符串
  • 数字
  • 对象(JSON 对象)
  • 数组
  • 布尔
  • null

在 JavaScript 中,以上所列均可为值,外加其他有效的 JavaScript 表达式,包括:

  • 函数
  • 日期
  • undefined

为什么 JSON 比 XML 更好?

  • XML 比 JSON 更难解析。
  • JSON 被解析为可供使用的 JavaScript 对象。

对于 AJAX 应用程序,JSON 比 XML 更快更易用:

使用 XML

  • 读取 XML 文档
  • 使用 XML DOM 遍历文档
  • 提取变量中存储的值

使用 JSON

  • 读取 JSON 字符串
  • JSON.Parse JSON 字符串

josn应用:

新建一个javaweb工程JsonPro

并新建一个servlet文件:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
@WebServlet("/JServlet")
public class JServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String s = "{\"name\":\"zhangsan\", \"age\":18 , \"sex\":\"nan\"}";
        response.getWriter().print(s);
        System.out.print(s);
    }
}

给客户端传入json格式的字符串;

然后新建JSP文件:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSON</title>
<script>
window.onload = function(){
    // 找到按钮以触发事件
    var btn = document.getElementById("btn");
    var h3 = document.getElementById("h3");
    btn.onclick = function(){
        // 创建异步对象
        var xp = new XMLHttpRequest();
        // 打开连接
        xp.open("GET","/JsonPro/JServlet",true);
        // 发送请求
        xp.send(null);
        // 状态变化事件
        xp.onreadystatechange = function(){
            if(xp.readyState == 4 && xp.status == 200){
                // 接收响应的值
                var text = xp.responseText;
                // 执行json
                var person = eval("(" + text + ")");
                var s = person.name + "" + person.age + "" + person.sex;
                h3.innerHTML = s;
            }
        }
    }
}
</script>
</head>
<body>
    <h1> Josn -- HelloWorld </h1>
    <button id="btn">点击按钮</button>
    <h3 id="h3"></h3>
</body>
</html>

上面的eval()方法可以使用Function()来代替:

var person = new Function('return' + text )();

搞定,运行:

点击:

 

 

 

posted on 2022-04-03 14:40  时间完全不够用啊  阅读(533)  评论(0编辑  收藏  举报