JavaScript | JSON基本格式
—————————————————————————————————————————————————————————
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基本格式的更多相关文章
- javascript中字符串格式json如何转化成json对象
什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...
- javascript中字符串格式转化成json对象记录
什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...
- JSON数据表示格式简介(JavaScript对象表示法)
[1] JSON简介 > JSON全称 JavaScript Object Notation > 类似于JS中对象的创建的方法 > JSON和XML一样,都是一种表 ...
- 4种解决json日期格式问题的办法
4种解决json日期格式问题的办法 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...
- 解决json日期格式问题的3种方法
这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...
- JavaScript校验图片格式及大小
<!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...
- json日期格式问题的办法
//json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...
- JOSN学习总结<二> JSON的格式与语法
今晚又下班早!!嘿嘿,继续JOSN的总结吧!!!!有人说这么简单还有必要写吗???我觉得“眼里过十遍不如手里过一遍”!!有错误之处请指正!!共同学习下!!!!废话不说了,进入今晚的正题: <二& ...
- JS对象与json字符串格式
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
随机推荐
- Funny Car Racing CSU - 1333 (spfa)
There is a funny car racing in a city with n junctions and m directed roads. The funny part is: each ...
- 【BZOJ 4567】【SCOI 2016】背单词
http://www.lydsy.com/JudgeOnline/problem.php?id=4567 贪心. 任何不用第一种情况的方案吃的泡椒数都小于\(n^2\),所以最小泡椒数的方案一定不包含 ...
- 【动态规划】Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister
预处理每一层最左侧的1的位置,以及最右侧的1的位置. f(i,0)表示第i层,从左侧上来的最小值.f(i,1)表示从右侧上来. 转移方程请看代码. #include<cstdio> #in ...
- 【序列莫队】BZOJ2038- [2009国家集训队]小Z的袜子(hose)
[题目大意]给出1-N只袜子的颜色,多次询问L-R中选出一双同色袜子的概率. [思路] 裸莫队.基本的莫队步骤:①分组(每组大小为根号sqrt(n),共sqrt(n)组)②排序(左边界分组,右边界在组 ...
- 协程和IO模型
协程 1.什么是协程 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地 该线程内的 ...
- static_cast, dynamic_cast, reinterpret_cast, const_cast的区别
static_cast最像C风格的强制转换,很多时候都需要程序员自身去判断转换是否安全.但是相对C风格的强制转换,在无关类的类指针之间转换上,有安全性的提升. dynamic_cast是运行时的转换吧 ...
- Problem C: 零起点学算法82——数组中查找数
#include<stdio.h> int main(void) { ],m; while(scanf("%d",&n)!=EOF) { ;i<n;i++ ...
- Problem E: 调用函数,整数逆序输出
#include<stdio.h> int reverse(int number)//定义函数 { ;//result用于储存结果 ) { result=result*; i=number ...
- JDK | JDK安装与环境变量配置
文章目录 写在前面 官网下载安装jdk jdk系统环境变量的配置 检验jdk是否配置成功 写在前面 JDK的全称是Java SE Development Kit,也就是Java 开发工具箱.SE表示标 ...
- 浅析position:relative position:absolute
定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样.如果理清了定位的原理,那定位会让网页实现的更加完美. 定位的定义: 在CSS中关于定位的内容是: ...