您的当前位置:首页正文

JSON的parse()方法介绍

2020-11-27 来源:步旅网

parse()方法的介绍:

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

语法

JSON.parse(text[, reviver])

参数说明:

  • text:必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
  • 下面我们来看一个实例:

    <p id="demo"></p>
    <script>
    var obj = JSON.parse('{ "name":jb51", "alexa":10000, "site":www.gxlcms.com }');
    document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
    </script>

    首先通过parse()方法将JSON数据转换为JavaScript对象,

    解析完成后,我们就可以在网页上使用JSON数据了

    从服务端接收 JSON 数据(数组JSON数据)

    我们可以使用 AJAX 从服务器请求 JSON 数据,并解析为 JavaScript 对象。

    eg:
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    myObj = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myObj.name;
    } };
    xmlhttp.open("GET", "/try/ajax/json_demo.txt", true); xmlhttp.send();

    json_demo.txt服务端数据需要自个编写。

    JSON中有个异常解析数据

    JSON 不能存储 Date 对象。如果你需要存储 Date 对象,需要将其转换为字符串。之后再将字符串转换为 Date 对象。

    <p id="demo"></p>
    <script> //将字符串转换为data对象
    var text = '{ "name":"csdn", "initDate":"2018-12-14", "site":www.gxlcms.com}';
    var obj = JSON.parse(text);
    obj.initDate = new Date(obj.initDate);
    document.getElementById("demo").innerHTML = obj.name + "创建日期: " + obj.initDate;
    </script>

    这时我们可以启用JSON的第二个参数:

    <p id="demo"></p>
    <script>
    var text = '{ "name":"csdn", "initDate":"2018-12-14", "site":"www.gxlcms.com"}';
    var obj = JSON.parse(text, function (key, value) {
     if (key == "initDate") {
     return new Date(value);
     } else {
     return value;
    }});
    document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;

    解析函数:

    JSON 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。

    var text = '{ "name":"jb51", "alexa":"function () {
    return 10000;}",
    "site":"www.gxlcms.com"}';
    var obj = JSON.parse(text);
    obj.alexa = eval("(" + obj.alexa + ")"); 注意:最好不要在json中使用函数
    document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

    总结

    显示全文