json.stringify()/json.parse()

大厨的笔记      2022-02-07     379

关键词:

JSON.stringify() 这个方法可以把javascript对象转换成json字符串。

JSON.parse() 这个方法可以把 json 字符串转换成 javascript对象。

【下面来看一下这两个方法的详细解答】

json数据中没有变量和结尾的分号,并且数据必须是用双引号引起来的,单引号会报语法错误。

json的数据格式:

{
        "name":"chef",
        "child":{
            "name1":"children",
            "age1":[
                "one",
                "two",
                "three"
            ],
            "hello":"world"
        },
        "age":33
    }

 

JSON.stringify()

  把一段 javascript 对象序列化为 json 字符串忽略缩进与空格,并可以把单引号给你改成双引号,此方法还可以传入第二个参数,这第二个参数可以是一个数组,也可以是一个函数。如果是数组,那么数组元素一定要与javascript对象中的键相匹配(键值对的键)

如果是一个数组,那么表示序列化这个数组元素相对应的javascript对象的键值对

// 此对象贯穿全文
var js = {
        "name":"chef",
        "child":{
            "name1":"children",
            "age1":[
                "one",
                "two",
                "three"
            ],
            "hello":"world"
        },
        "age":33
    }

    // 把 javascript对象序列化为 json 字符串忽略缩进与空格
    var js_json = JSON.stringify(js);

    console.log(js_json); //{"name":"chef","child":{"name":"children","age":["one","two","three"],"hello":"world"},"age":33}


    //序列化选项传入数组
    var js_option = JSON.stringify(js,["child","age"]);

    //只序列化了指定的 键 :child age
    console.log(js_option); //{"child":{"age":["one","two","three"]},"age":33}

 

 

还可以传入一个函数,这个函数有两个参数,即(key,value)被序列化的json字符串的键值对,可以在函数的内部改变这些value

//序列化选项 传入一个函数
    var js_fn = JSON.stringify(js,function(key,value){
        switch(key){
            case "age1":
                //把age1的值用逗号分隔成字符串
                return value.join(",");

            case "name1":
                //把原来的值替换掉
                return "直接把原来的值修改了";

            case "hello":
                //删除该键值对
                return undefined;

            //没有default这句获取不到数据
            default:
                return value;
        }
    });

    console.log("传入函数的结果:"+js_fn);
    //传入函数的结果:{"name":"chef","child":{"name1":"直接把原来的值修改了","age1":"one,two,three"},"age":33}

  

  还可以传入第三个参数,(第二个参数不传可以写null) 第三个参数是控制json字符串缩进的,它是个数字或字符串,数字最多缩进10,如果传入的大于10则自动转化为10,如果传入的是字符串,则用这个字符串当做缩进符来代替空格

//传入第三个参数控制字符串缩进
    var js_indent = JSON.stringify(js,null,4);

    console.log("缩进后的json字符串:"+js_indent);
    /*
    浏览器执行效果:
         缩进后的json字符串:{
            "name": "chef",
            "child": {
                "name1": "children",
                "age1": [
                    "one",
                    "two",
                    "three"
                ],
                "hello": "world"
            },
            "age": 33
         }
    */


toJSON()

  定义在javascript对象中,当序列化javascript对象的时候,会先调用toJSON方法然后序列化toJSON返回的值,如果toJSON方法return undefined,那么这个javascript对象的值就是undefined,如果包含toJSON方法的对象被嵌入在其他的对象里,那么包含toJSON方法的对象的值会变为null

var js_tojson = {
        name:‘chef‘,
        age:‘22‘,

        //在javascript对象中这样定义 toJSON 方法
        toJSON:function(){

            return {name:this.name,age:this.age};
        }
    };

    //调用stringify()方法序列化对象
    var tojsonText = JSON.stringify(js_tojson);

    console.log("调用 toJSON 的结果:"+tojsonText) //调用 toJSON 的结果:{"name":"chef","age":"22"}

【序列化的顺序是先检查 javascript对象中是否有 toJSON方法,如果有那么先执行toJSON方法,返回什么就序列化什么】

stringify()参数的执行顺序:
  1,第一个参数
  2,检查toJSON并执行
  3,第二个参数
  4,第三个参数

 

 

JSON.parse()

 

把一段json字符串解析为原生javascript值 如果传给parse()的不是有效的json字符串,这个方法会抛出错误

// 把 json 字符串解析为原生javascript值
    var json_js = JSON.parse(js_json);

    console.log(json_js); // Object {name: "chef", child: Object, age: 33}

parse()方法也有第二个参数,可以给它传一个函数,这个函数同样有两个值,(key,value)这个函数的功能跟 stringify()的第二个函数的功能一样

    //==== perse() 的第二个参数
    var perse_fn = {
        name:"chef",
        age:66,
        newDate: new Date()
    }

    //先把perse_fn对象转换成json字符串
    var perse_json = JSON.stringify(perse_fn);

    //再把json字符串转为javascript对象
    var perse_js = JSON.parse(perse_json,function(key,value){
        switch(key){
            case "name":

                //可以改变 value
                return value+"大厨的笔记";

            case "newDate":

                //返回时间对象
                return new Date();

            // 这个 default 必须有,不然就 undefined 了,
            default:
                return value;
        }
    });

    console.log(perse_js);//Object {name: "chef大厨的笔记", age: 66, newDate: Thu Nov 10 2016 22:52:20 GMT+0800 (中国标准时间)}

以上就是本人对 json 的总结。

 






json.stringify函数

摘抄,好酷的json.stringifyJSON.stringify函数(JavaScript) 将JavaScript值转换为JavaScript对象表示法(Json)字符串。语法   JSON.stringify(value[,replacer][,space])参数 value必需。  要转换的JavaScript值(通常 查看详情

json.parse()和json.stringify()

json.parse()用于从一个字符串解析出json对象varstr=‘{"name":"huangzhong","age":"23"}‘json.parse(str)stringify()用于从对象解析出字符串vara={a:1,b:2}json.stringify(a)‘{"a":1,"b":2}‘ 查看详情

json.stringify,json.parse方法

varobj={name:‘zhangsan‘,age:‘18‘};/**js对象--->JSON字符串*JSON.stringify(js对象)--转化为-->JSON字符串**/console.log(obj);//Object{name:"zhangsan",age:"18"}console.log(JSON.stringify(obj));//{"name":"zhangsan 查看详情

java中的JSON.stringify - android

】java中的JSON.stringify-android【英文标题】:JSON.stringifyinjava-android【发布时间】:2014-03-3110:32:58【问题描述】:有没有办法在android中执行JSON.stringify?我一直在网上看到JSON.stringify(JSONObject),但我在android中找不到JSON类。有什么帮... 查看详情

异步 JSON.stringify

】异步JSON.stringify【英文标题】:AsynchronousJSON.stringify【发布时间】:2014-01-2120:49:40【问题描述】:如果我有:fetched_user.settings=null;fetched_user.settings=JSON.stringify(settings);$http.post(\'/api_endpoint\',val:fetched_user.settings);而JS 查看详情

深度使用json.stringify()

按照JSON的规范,使用JSON.stringify()做对象序列化时,如果一个属性为函数,那这个属性就会被忽略。constdata1={a:‘aaa‘,fn:function(){returntrue}}JSON.stringify(data)//结果是"{"a":"aaa"}"还有一种情况,一个属性的值为undefinedconstdata2={a:‘abc‘,... 查看详情

json.stringify函数

作用:将对象(JSON对象)转换成字符串(JSON字符串)例子:varperson=newObject();person.name="zhangan";person.age="20";console.info(person);//Object{name:"zhangan",age:"20"}console.info(JSON.stringify(person));//{"name":"zhanga 查看详情

如何 JSON.stringify 对象数组

】如何JSON.stringify对象数组【英文标题】:HowtoJSON.stringifyanarrayofobjects【发布时间】:2016-05-0700:44:08【问题描述】:我正在尝试JSON.stringify()以下键/值对,其中值是对象数组。varstring=JSON.stringify(onlineUsers:getUsersInRoom(users,room));这是... 查看详情

json.stringify(),json.parse(),tojson()方法使用

JSON.stringify():将value(Object,Array,String,Number...)序列化为JSON字符串JSON.parse():将JSON数据解析为js原生值toJSON(),作为JSON.stringify中第二个参数(函数过滤器)补充,理解内部顺序很重要。假设把一个对象传入JSON.stringify()序列化对象的顺序如... 查看详情

json.parse()与json.stringify()的区别

JSON.parse()与JSON.stringify()的区别JSON.parse()【从一个字符串中解析出json对象】例子://定义一个字符串vardata=‘{"name":"goatling"}‘//解析对象??JSON.parse(data)结果是:?name:"goatling"JSON.stringify()【从一个对象中解析出字符串】vardata={name:‘go... 查看详情

json.parse(str),json.stringify(a)

1、JSON.parse(str),字符串转换成对象varstr=‘{"name":"huangxiaojian","age":"23"}‘;JSON.parse(str);2、JSON.stringify(a),对象转换成字符串vara={w:1,b:2};JSON.stringify(a);   查看详情

json.parse()与json.stringify()的区别

...tling"}‘//解析对象??JSON.parse(data)结果是:?name:"goatling"JSON.stringify()【从一个对象中解析出字符串】vardata={name:‘goatling‘}JSON.stringify(data)结果是:‘{"nam 查看详情

json.parse()和json.stringify()

...         结果为:Object: {a:1,b:2} JSON.stringify():把一个对象解析成字符串。          例如:vara 查看详情

text[stringify循环json对象]#js#json#stringify#cyclic#object(代码片段)

查看详情

json.parse()和json.stringify()

JSON.parse()和JSON.stringify():parse用于从一个字符串中解析出json对象,如下:varstr=‘{"name":"huangxiaojian","age":"23"}‘结果:JSON.parse(str) Objectage: "23"name: "huangxiaojian"__proto__: Objectstringi 查看详情

json.parse()和json.stringify()

...在{}外,每个属性名都必须用双引号,否则会抛出异常。stringify()用于从一个对象解析出字符串,如vara={a:1,b:2}JSON.stringify(a) 查看详情

返回 Json.Stringify 结果

】返回Json.Stringify结果【英文标题】:returnJson.Stringfyresult【发布时间】:2016-09-0207:50:10【问题描述】:我有这段代码:$.getJSON(\'http://myjsonurl\',function(json)console.log(JSON.stringify(json.columns)););这会在控制台中返回我从json响应中需要的... 查看详情

在 JSON.stringify 中使用变量

】在JSON.stringify中使用变量【英文标题】:useavariableinJSON.stringify【发布时间】:2014-03-0915:22:13【问题描述】:我在我的节点restful服务器中使用stringify来提供数据:answer=JSON.stringify(activities:result,null,\'\\t\');returnanswer其中result是一... 查看详情