JSON

json是一种数据格式,不是一种编程语言。 json是一种轻量级的数据格式,可以简化表示复杂数据结构的工作量。

1、语法 ①json字符串必须使用双引号 ②没有声明变量 ③没有末尾分号 ④json对象中的属性名必须加双引号

json的语法可以表示三种类型的值 简单值:使用与js相同的语法,可以在json中表示字符串、数值、布尔值和null。(不支持undefined)

"hello world"

对象:

{
     "name":"Ewall",
     "age":21
}

数组:

[25,"ewall",true]

2、JSON对象 两个方法:stringfy( ):把js对象序列化为json字符串                   parse( ):把json字符串解析为原生js值

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person);
console.log(jsonText);

3、JSON.stringfy( )的具体用法 该方法可以传入三个参数,第一个参数是要序列化的对象;第二个是个过滤器(可以是数组或者是函数);第三个是一个选项,表示是否在JSON字符串中保留缩进。 ①当过滤器是数组,那么该方法返回的结果将只包含数组中列出的属性

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person,["name","year"]);

console.log(jsonText); //{"name":"Ewall","year":2017}

②当过滤器是函数。传入的函数接收两个参数,属性名和属性值,根据属性名可以知道应该如何处理要序列化的对象中的属性。

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017
};
var jsonText=JSON.stringify(person,function(key,value){
    switch(key){
        case "friends":
            return value.join(",");
        case "year":
            return undefined;  //通过返回undefined删除该属性
        default:
            return value;
    }
});
console.log(jsonText); //{"name":"Ewall","friends":"joe,frank","edition":3}

4、JSON.parse( )方法的具体用法 接收两参数:第一个参数是要序列化的对象;第二个参数是个还原函数。 在将日期字符串转换为Date对象是,经常要用到还原函数。

var person={
    name:"Ewall",
    friends:["joe","frank"],
    edition:3,
    year:2017,
    releaseDate:new Date()
};
var jsonText=JSON.stringify(person);
console.log(jsonText);

var bookCopy=JSON.parse(jsonText,function(key,value){
    if(key=="releaseDate"){
        return new Date(value);  //基于相应的json值创建一个新的Date对象
    }else{
        return value;
    }
});
console.log(bookCopy.releaseDate);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谈谈观察者模式和发布订阅模式

    参考学习: https://juejin.im/post/5a14e9edf265da4312808d86 https://molunerfinn.com/...

    Ewall
  • JS数据结构与算法-队列

    Ewall
  • 一次讲清移动端适配解决方案—rem和vw

    Ewall
  • 一步一步学Linq to sql(一):预备知识

      Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据...

    aehyok
  • 穷则思变,对IBM Watson走向开放的几点思考

    在经济利益的驱使下,蓝色巨人IBM似乎终于放下了高傲的身段走向了开放,2月13日,IBM宣布,该公司的一部分的Watson AI服务将可以使用竞争对手的云计算平...

    人称T客
  • python PEP8 记录

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 在辐射源特征识别上的信号处理方法

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/ways-to-manipulate-signal/

    羽翰尘
  • Java | 顶层类(Top-Level Class)

    顶层类(Top-Level Class),是 Java 中对类的一种定义方式。在 .java 文件中,处于最外层的类就称为顶层类,在其外部不存在将其包围起来的任...

    Blume
  • IBM携手法国银行,签署混合云服务协议

    与“蓝色巨人”达成的一项传统基础设施服务协议,目前已扩大到涵盖公共云使用和提供先进的网络安全服务等领域。

    CloudBest
  • 不作恶!IBM宣布放弃人脸识别业务,关停技术研发

    当地时间6月8日,IBM高调宣布不再提供任何人脸识别服务和人脸分析软件,正式退出这一市场。不仅如此,今后IBM也不会继续研发相关技术。

    量子位

扫码关注云+社区

领取腾讯云代金券