—————————————————————————————————————————————————————————

JSON

语法

"use strict";
// 简单值
"hello,world" // 必须使用双引号 // 对象
{
"name": "hugh",
"age": 12,
"school":
{
"name": "xzcit",
"location": "North Andover,MA"
}
} // 数组
[25, "hi", true] // 组合使用
[
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 3,
"year": 2002
},
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 4,
"year": 2003
},
{
"title": "Professional JavaScript",
"author": [
"Nicholas C.Zakas"
],
"edition": 5,
"year": 2004
}]

序列化JSON对象

  • stringify() - 把js对象序列化为json字符串
  • stringify()序列化对象的顺序
    • 如果存在toJSON方法并且能通过它取得有效的值,则调用该方法。否则返回对象本身
    • 如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是步骤1返回的值
    • 对步骤2返回的值进行相应的序列化
    • 如果提供了第三个参数,执行相应的格式化
"use strict";
var book = [{
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002
}];
// 使用JSON.stringify()把一个js对象序列化为一个json字符串,保存在变量jsonText中
var jsonText = JSON.stringify(book);
console.log(jsonText);
console.log(typeof jsonText); // string // 过滤结果
var jsonText = JSON.stringify(book, ["title", "year"]); // 过滤只保留title和year
console.log(jsonText); // 修改返回结果
var jsonText = JSON.stringify(book, function(key, value) { // 传入键值对
switch (key) {
case "author":
return value.join("||"); // 将数组连接成为字符串
case "year":
return 5000;
case "edition":
return undefined; // 返回undefined属性被忽略
default:
return value; // 其他返回本身值
}
});
console.log(jsonText); // 字符串缩进
var jsonText = JSON.stringify(book, null, 4); // 缩进4个空格,最大缩进10格
console.log(jsonText);
var jsonText = JSON.stringify(book, null, " - -"); // 特殊符号缩进
console.log(jsonText); // toJSON()方法
var book = [{
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002,
"toJSON": function() { // toJSON可以作为函数过滤器的补充
return this.title;
}
}];
var jsonText = JSON.stringify(book);
console.log(jsonText);

解析JSON对象

  • 早起JSON解析器是使用eval()函数,但eval()可能会执行恶意代码
  • parse() - 把json字符串解析为原生js值
"use strict";
var book = {
"title": "Professional JavaScript1",
"author": [
"Nicholas C.Zakas",
"hugh"
],
"edition": 3,
"year": 2002,
"releaseDate": new Date(2011, 11, 1)
};
var jsonText = JSON.stringify(book);
console.log(jsonText);
var bookCopy = JSON.parse(jsonText, function(key, value) {
if (key == "releaseDate") {
return new Date(value);
} else {
return value;
}
})
console.log(bookCopy.releaseDate);
console.log(bookCopy.year); //使用 JSON.parse 反序列化 ISO 格式的日期字符串, 将返回Date格式对象。
var jsonText = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
var dates = JSON.parse(jsonText, dateReviver);
function dateReviver(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
}
}
return value;
};
console.log(dates.birthdate.toUTCString());

JavaScript | JSON基本格式的更多相关文章

  1. javascript中字符串格式json如何转化成json对象

    什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...

  2. javascript中字符串格式转化成json对象记录

    什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...

  3. JSON数据表示格式简介(JavaScript对象表示法)

    [1] JSON简介    > JSON全称 JavaScript Object Notation    > 类似于JS中对象的创建的方法    > JSON和XML一样,都是一种表 ...

  4. 4种解决json日期格式问题的办法

    4种解决json日期格式问题的办法   开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...

  5. 解决json日期格式问题的3种方法

    这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...

  6. JavaScript校验图片格式及大小

    <!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...

  7. json日期格式问题的办法

    //json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...

  8. JOSN学习总结<二> JSON的格式与语法

    今晚又下班早!!嘿嘿,继续JOSN的总结吧!!!!有人说这么简单还有必要写吗???我觉得“眼里过十遍不如手里过一遍”!!有错误之处请指正!!共同学习下!!!!废话不说了,进入今晚的正题: <二& ...

  9. JS对象与json字符串格式

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

随机推荐

  1. 【webssh】shellinabox搭建

    shellinabox搭建 centos环境安装命令 # yum install epel-release # yum install shellinabox 启动与关闭: service shell ...

  2. Python开发基础-Day15正则表达式爬虫应用,configparser模块和subprocess模块

    正则表达式爬虫应用(校花网) import requests import re import json #定义函数返回网页的字符串信息 def getPage_str(url): page_stri ...

  3. ES5 的 Array

    1: Array.isArray判断是否为数组 Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false // Pol ...

  4. Windows下安装Redis服务及安装PHP的Redis扩展

    Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务器,因为值(valu ...

  5. BZOJ 2296【POJ Challenge】随机种子(构造)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2296 [题目大意] 给出一个数x,求一个10的16次以内的数使得其被x整除并且数字包含 ...

  6. [xsy1232]Magic

    题意:一个无向图,每个点有$a_i,b_i$,对任意点$i$你都可以花费$b_i$的费用将$a_i$变为$0$,最后你还要付出$\sum\limits_{i=1}^n\max\limits_{(i,j ...

  7. 【思路】Gym - 101173F - Free Figurines

    套娃形成一些链形结构,给你套娃的初始状态和目标状态,问你需要几步(将最外层套娃打开,以及将一整套套娃塞进一个空套娃都算一步)才能达到. 容易发现,只有每条链链尾的匹配段可以不拆,其他的都得拆开. #i ...

  8. 事件BOM DOM

    1.事件 1.1 事件绑定 # 1.写在html元素中 <button onclick='code'></button> # 2.把事件当作元素对象的方法 btnEle.onc ...

  9. [POJ3581]Sequence

    [POJ3581]Sequence 题目大意: 给定序列\(A_{1\sim n}\),其中\(A_1\)为最大的数.要把这个序列分成\(3\)个非空段,并将每一段分别反转,求能得到的字典序最小的序列 ...

  10. (原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example

    本栏目来源于Andrew NG老师讲解的Machine Learning课程,主要介绍大规模机器学习以及其应用.包括随机梯度下降法.维批量梯度下降法.梯度下降法的收敛.在线学习.map reduce以 ...