ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSON:结构化数据格式

2019-09-19 20:00:38  阅读:277  来源: 互联网

标签:结构化 name age stringify JSON 数据格式 var hobby


  JSON是javascript的子类,也是作为更好的互联网传输结构化数据格式逐渐取代XML,因此要理解JSON,重要的是理解它是一种数据格式,不是一种编程语言。

  语法

  

//javascript

var object = {
    "name":"lihua",
    "age":"20",
    "gender":undefined
}

//JSON

{
    "name":"lihua",
    "age":"20",
}

 

由于JSON是数据格式,所以没有变量的概念,同时键值必须使用双引号。

  JSON的stringify与parse方法(序列化与解序)

  早期的JSON解析器基本上都使用了eval()函数,但是可能会执行恶意代码(eval函数可以解析,解释并返回js对象。ECMASCRIPT 5再后来规范了JSON行为,定义了全局对象JSON,并添加了两个JSON方法:stringify()和parse()。

  

var person = {
    name:"lihua",
    age:"18",
    hobby:[
        "basketball",
        "badminton"
    ],
    action:function(){
         alert("help")
    }  
}

var jsonText = JSON.stringify(book)
//{"name":"lihua","age":"18","hobby":["basketball","badminton"]}

var jsText = JSON.parse(jsonText);

 在序列化时,函数与原型对象成员都将被忽略(JSON只接受两种复杂类型对象与数组),值为undefined的属性值也会被跳过。

 序列化选项与结构化选项

  

var person = {
    name:"lihua",
    age:"18",
    hobby:[
        "basketball",
        "badminton"
    ]
}
//stringify第二个参数为过滤项
var jsonText1 = JSON.stringify(person,["name","hobby"]);
//{"name":"lihua","hobby":["basketball","badminton"]}
var jsonText2 = JSON.stringify(person,function(key,value){
    switch(key){
        case "name":
            return "zhoujielun";
        case "age":
            return 17;
        case "hobby":
            return value.join(",")
        default:
            return value
    }
});
//{"name":"zhoujielun","age":17,"hobby":"basketball,badminton"}

//stringify第三个参数为字符串缩进
var jsonText3 = JSON.stringify(person,null,"--");
// {
//     --"name": "lihua",
//     --"age": "18",
//     --"hobby": [
//     ----"basketball",
//     ----"badminton"
//     --]
// }

//JSON.parse与stringify相同

 

标签:结构化,name,age,stringify,JSON,数据格式,var,hobby
来源: https://www.cnblogs.com/lh-zq/p/11552203.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有