• js020-JSON


    js020-JSON

    20.1 语法

    JSON的语法可以表示为一下三种类型的值。

    简单值

    使用与JS相同的语法,可以在JSON中表示字符串、数值、布尔值和null,但是JSON不支持JS中的特殊性Undefined

    对象

    对象作为一种复杂数据类型, 表示一组无序的键值对。每个键值对中的值可以是简单值,也可以是复杂数据类型值。

    数组

    一种复杂数据类型,表示一组有序的值的列表,可以通过数值

    1、简单值

    最简单的JSON数据形式。例如:

    5

    JSON 表示数值5的方式

    “Hello word”

    JSON 表示字符串的方式

    JSON字符串必须使用双引号(单引号会导致语法错误)

    2、对象

    JS对象字面量

    JS对象字面量另一种写法

    JSON表示的上述对象的方式

    var person = {

           name:"meimei";

           age:18;

    };

    var person = {

           "name":"meimei";

           "age":18;

    };

    {

           "name":"meimei",

           "age":18

    }

    JSON对象没有变量和分号

    3、数组

    JS对象字面量

    JSON表示的上述对象的方式

    var values = [25, 'hi', true];

    [25, 'hi', true]

    JSON数组没有变量和分号

    20.2 解析与系列化

    20.2.1 JSON对象

    可以把JSON数据结构解析为有用的JS对象。

    JSON对象有两个方法:

    stringify()

    把JS对象序列化为JSON字符串。在序列化JS对象是,所有函数原型成员都会被有意忽略,不体现在结果中,值为Undefined的任何属性也会被跳过。结果最终都是值为有效的JSON数据类型的实力属性。

    parse()

    把JSON字符串解析为原生的JS值。将JSON字符串直接传递给JSON. parse()就可以得到相应的JS值,如下:创建与book类似的对象:

    var bookcopy = JSON.parse(jsonText);

    20.2.2序列化选项

    JSON. stringify()可接收两个参数:1、过滤器或者数组或者函数;2、选项:表示是否在JSON字符串中保留缩进。

    使用这两个参数可以指定不同方式序列化JS对象。

    一、过滤结果

    二、字符串缩进

    JSON. stringify()的三个参数用于控制结果中的缩进和空白符。

    参数类型的含义:

    数值

    非数值(字符串)

    表示的每个级别缩进的空格数,可以通过有效的参数控制换行符。最大缩进空格为10,所有大于10的值都会自动转换为10.

    将该字符串作为缩进字符,(例如:制表符:“—”)

    三、toJSON()方法

    可以为任何对象添加toJSON()方法。

    toJSON()方法可以作为函数过滤器的补充,假设把一个对象传入就JSON.stringify(),序列化该对象的顺序如下

    1、如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法,否则返回对象本身。

    2、如果提供第二个参数,应用这二个函数过滤器,传入函数过滤器的值是第(1)步返回的值;

    3、对第(2)步返回的每个值进行相应的序列化;

    4、如果提供第三个参数,指向相应的格式化。

    20.2.3解析选项

    JSON.parse()方法可接收另一个参数:函数(将在每个键值对上调用)。为了区分JSON.stringify()接收的替换函数,这个函数成为还原函数(实际上这另个函数的签名是相同的,它们都接收两个参数:一个键和一个值,且都返回一个值)

    如果还原函数返回一个Undefined值,表示要从结果中删除相应的键,返回其他值,则将该值插入到结果中。

     

    原文地址:http://www.cnblogs.com/lal-fighting/p/5161875.html

  • 相关阅读:
    badblocks 检查硬盘是否有坏道
    IE兼容性开发的笔记
    Linux下设置ip和主机名进行绑定
    netty httpserver
    netty websocket协议开发
    OAuth2.0和SSO授权的区别
    window.location.href跳转问题2
    修改密码,验证两次输入是否相同,相同才能提交
    (2)集合 遍历set集合
    (1)集合 ---遍历map集合
  • 原文地址:https://www.cnblogs.com/lal-fighting/p/5161875.html
Copyright © 2020-2023  润新知