资讯专栏INFORMATION COLUMN

JSON 格式

YanceyOfficial / 2165人阅读

摘要:张三李四张三李四以下是不合格的值。张三属性名必须使用双引号不能使用十六进制值张三不能使用张三不能使用函数和日期对象三处理格式数据的方法用途用于将一个值转为字符串。举个例子张三张三特例如果传入的字符串不是有效的格式,方法将报错。

一:JSON 格式定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。2001年由 Douglas Crockford 提出,目的是取代繁琐笨重的 XML 格式。

二、JSON 格式规则

复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。

简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。

字符串必须使用双引号表示,不能使用单引号。

对象的键名必须放在双引号里面。

数组或对象最后一个成员的后面,不能加逗号。

空数组和空对象都是合格的 JSON 值,null本身也是一个合格的 JSON 值

以下是合格的 JSON 值。

["one", "two", "three"]

{ "one": 1, "two": 2, "three": 3 }

{"names": ["张三", "李四"] }

[ { "name": "张三"}, {"name": "李四"} ]
以下是不合格的 JSON 值。

{ name: "张三", "age": 32 }  // 属性名必须使用双引号

[32, 64, 128, 0xFFF] // 不能使用十六进制值

{ "name": "张三", "age": undefined } // 不能使用undefined

{ "name": "张三",
  "birthday": new Date("Fri, 26 Aug 2011 07:13:10 GMT"),
  "getName": function() {
      return this.name;
  }
} // 不能使用函数和日期对象
三、处理 JSON 格式数据的方法 1、JSON.Stringify

1)用途
用于将一个值转为字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。
2)参数
JSON.stringify(value[, replacer [, space]])

2.1 value:将要序列化成 一个JSON 字符串的值
2.2 replacer (可选)

如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理

function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);
//{"week":45,"month":7}.

如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中。

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
JSON.stringify(foo, ["week", "month"]);  
// "{"week":45,"month":7}", 只保留“week”和“month”属性值。

如果该参数为null或者未提供,则对象所有的属性都会被序列化;

2.3 space 参数(可选)
space 参数用来控制结果字符串里面的间距

如果是数字, 则在转换时每一级别会比上一级别缩进对应 数字值的空格(最多10个空格)

如果是一个字符串,则每一级别加上该字符串(或该字符串的前十个字符)

3)举个例子

JSON.stringify("abc") // ""abc""
JSON.stringify(1) // "1"
JSON.stringify(false) // "false"
JSON.stringify([]) // "[]"
JSON.stringify({}) // "{}"

JSON.stringify([1, "false", false])
// "[1,"false",false]"

JSON.stringify({ name: "张三" })
// "{"name":"张三"}"

4)总结
先写""转换为字符串格式,再把需要转换的内容按照json格式的规则转变一下,该加""的加"",然后把转换后的内容放在""内,收工

5)特例
json格式不支持的内容会被过滤,分3种情况

原始对象

原始对象成员的值是undefined、函数或 XML 对象,这个成员会被过滤

var obj = {
  a: undefined,
  b: function () {}
};

JSON.stringify(obj) // "{}"

2.数组
数组的成员是undefined、函数或 XML 对象,则这些值被转成null

var arr = [undefined, function () {}];
JSON.stringify(arr) // "[null,null]"

3.正则对象
正则对象会被转成空对象。

JSON.stringify(/foo/) // "{}"
2、JSON.parse()

1)用途
JSON.parse方法用于将JSON格式的字符串转化成对象。
2)参数
JSON.parse(text[, reviver])
2.1 text
要被解析成JavaScript值的字符串

2.2 reviver 可选
转换器, 如果传入该参数(函数),可以用来修改解析生成的原始值,调用时机在parse函数返回之前。

JSON.parse("{"p": 5}", function (k, v) {
    if(k === "") return v;     // 如果到了最顶层,则直接返回属性值,
    return v * 2;              // 否则将属性值变为原来的 2 倍。
});                            // { p: 10 }

3)举个例子

JSON.parse("{}") // {}
JSON.parse("true") // true
JSON.parse(""foo"") // "foo"
JSON.parse("[1, 5, "false"]") // [1, 5, "false"]
JSON.parse("null") // null

var o = JSON.parse("{"name": "张三"}");
o.name // 张三

4)特例
如果传入的字符串不是有效的JSON格式,JSON.parse方法将报错。

JSON.parse(""String"") // illegal single quotes
// SyntaxError: Unexpected token ILLEGAL

5)遇到的坑
红框里面一个加的是单引号,一个加双引号,两个运行起来都没有错。
这代表是用于表示值为字符串的引号,使用单双引号都可以,但表示内容为json格式的引号必须写双引号

部分内容源于mdn文档
JSON.parse()
JSON.stringify()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108736.html

相关文章

  • FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口

    摘要:针对上一篇六十二实战开发在线课程学习系统需求分析需求的功能,我们对需要的接口进行梳理,大概的规划出来现有的接口,作为我们第一版的接口的设计出版,然后我们根据设计的接口。后记文章首发在公众号,欢迎关注。  针对上一篇FastAPI(六十二)实战开发《在线课程学习系统》需求分析需求的功能,我们对需要的接口进行梳理,大概的规划出来现有的接口,作为我们第一版的接口的设计出版,然后我们根据设计的接口。...

    番茄西红柿 评论0 收藏2637
  • JSON数据格式的使用

    摘要:数据格式是一种轻量级的数据交换格式。为了对名为的对象进行转换,只需执行相同形式的命令这就是与本系列讨论的其他数据格式之间最大的差异。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过的索引就能够读取黑龙江这个值。 JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使...

    番茄西红柿 评论0 收藏0
  • JSON数据格式及其在WEB开发中的应用

    摘要:是什么是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,是原生格式,这意味着在中处理数据不需要任何特殊的或工具包。底层存储为格式是个构建在之上的新型查询语言。 JSON是什么? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 Java...

    red_bricks 评论0 收藏0
  • JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON

    摘要:说句玩笑话,如果是基于的,可能就叫了,形式可能就是这样的了,如果这样,那么可能现在是和比较密切了。此外,还有一个函数,我们较少看到,但是它会影响。 我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看,写完再去仔细对比你的控制台输出,如果有...

    Baaaan 评论0 收藏0
  • JSON对象与JSON(JavaScript Object Notation)

    摘要:对象注意这里的所说的对象是指,我们常用到的方法就是归于此对象。所以为方法返回与指定值相应的字符串。经过其处理后由变成了故打印经过处理后的结果注意最后一项后面的不见了这是因为经处理后,其变成了完全符合格式的文本。 JSON对象 注意这里的所说的JSON对象是指window.JSON,我们常用到的JSON.parse()||JSON.stringify()方法就是归于此对象。 typeo...

    XFLY 评论0 收藏0

发表评论

0条评论

YanceyOfficial

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<