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());

 

 

转载于:https://www.cnblogs.com/hughdong/p/7265216.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter 生成计数器_使用密码摘要生成器扩展JMeter

jmeter 生成计数器最近,我不得不处理一个具有50,000条用户记录的OpenLDAP实例,并进行一些压力测试。 JMeter是填充LDAP的最佳选择。 但是,在我的情况下,OpenLDAP配置为不接受任何明文密码。 因此,我无法使用通过JMet…

c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...

查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)给定一个字符串str,找到不重复字符的最长子字符串。比如我们有 “ABDEFGABEF”, 最长的字符串是 “BDEFGA” 和 “DEFGAB”, 长度为6.再如 “BBBB” 最长字符串是 “B”,…

mysql 触发器 本表_MySQL触发器处理本表数据

关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数据。在MySQL中写触发器操作关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数…

官方野生蝇群流口水分数

官方是什么? 标题太小,但有用的贡献。 Wildfly Swarm允许我们创建相当小的自包含应用程序,包括我们从Wildfly Application Server中需要的应用程序。 在这篇文章中,我们将研究与Wildfly Swarm合作使用的Drools分数 。 该部分背后的…

MySQL 高水位update_Oracle delete 高水位线处理问题

最近遇到oracle 表中数据量很大查询和更新比较慢 需要删除,发现删除后查询速度还是很慢,原来是delete oracle 高水位没有下降的最近遇到Oracle 表中数据量很大查询和更新比较慢 需要删除,发现删除后查询速度还是很慢,原来是delete…

jasperreports_JasperReports JSF插件用例–简单列表报告

jasperreports这是JasperReports JSF插件系列的第一篇“用例文章” ,我将专注于一个简单的需求,并且我将进一步深入。 起点是我们已经为图书商店完成的项目设置,我将向其中添加一个列表,其中包含在数据库中注册的其他图书&#xf…

2个菜鸟Java常量和枚举陷阱

在对Java和Groovy代码进行的各种代码审查中,我经常看到魔术数字和其他随机字符串在整个代码库中乱七八糟。 例如,魔术数字是下面的代码(Groovy)中的4.2: if (swashbuckle > 4.2) {... }4.2是什么意思?…

mysql cluster 外键_Mysql外键约束

Mysql集群创建外键,分为四种约束:no action,restrict,cascade,set null。如果表A的主关键字是表B中的字段,则该字段称为B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性…

Map类集合遍历

转载于:https://www.cnblogs.com/Neil223/p/7275035.html

小米10解锁bl跳过168_2021年小米红米手机官方解锁BL详细教程+跳过168小时方法合集...

MIUI的解锁风控一直在改动,从之前的无需解锁到现在的168小时绑定限制,时至2021年我们再次重新整理下小米的解锁新规则以及小米解锁常见问题解决方法。比如大家常问的如果跳过168小时解锁时间限制等等小米解锁工具下载:http://miuirom.xiaomi.…

android实现箭头流程列表_Android开发关于ExpandableListView上下箭头左右显示的笔记...

释放双眼,带上耳机,听听看~!关键属性:android:layoutDirection""当安卓的layoutDirection “rtl” 时,箭头在右边显示布局:android:layout_width"match_parent"android:layout_height…

mysql 5.5.41 下载_MySQL 5.5.41/5.6.22 发布下载

MySQL 5.5.41 发布下载,此版本更新内容如下:编译改进移除了旧版本 Mac OS X 和 XCode 版本的CMake 工作区 (Bug #18510941)Previously, the MYSQL_MAINTAINER_MODE CMake option was turned on by default for debug builds and off for release builds…

mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...

熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件。但是这个模型向导默认只显示微软自己的SQL Server数据源,如果想使用Mysql数据源&#…

ESP8266学习笔记6:ESP8266规范wifi连接操作

一、前言 我整理了从2015年至今关于ESP8266的学习笔记,梳理出来了开发环境、基础功能、进阶学习三大部分。方便自己和他人。可点此查看,欢迎交流。 之前在笔记4《ESP8266的SmartConfig》http://blog.csdn.net/iotisan/article/details/54849410中&#x…

关于flex,好像有12个属性非常重要

关于Flex,有12个属性非常重要 这几天在学习Flex布局,发现Flex真的好厉害! Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒模型提供最大的灵活性。 Flex是它能够简单、完整、响应式的实现各种网页布局&#xff0c…

MyBatis缓存与Apache Ignite的陷阱

一周前,MyBatis和Apache ignite 宣布支持apache ignite作为MyBatis缓存(L2缓存)。 从技术上讲,MyBatis支持两个级别的缓存: 本地缓存,默认情况下始终启用 L2缓存,可选 随着Apache Ignite项目…

python创建方法draw_Python做图像处理(五)---ImageDraw综合应用实例:自制验证码...

前面几讲讲解了pillow库中两个最重要的模块,Image模块与ImageDraw模块,本讲小编将这两个模块综合应用起来,来制作一个随机自动生成验证码的程序。1.生成验证码程序的算法设计原理验证码通常用于网络,是网站为了防止恶意注册和网络…

unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...

发现问题最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine InnoDB错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一下过程&…

oracle 中大于等于_针对oracle安装参数调整方法

solaris针对oracle安装的shmmax参数调整方法安装数据库不能拘泥于联机文档,最近看到好几个跑oracle的sun主机上,都把和数据库内存使用相关的操作系统内核参数shmmax设置成4G,因为联机文档中“solaris系统上安装oracle”是这样写的。具体实施时…

带有JAX-WS和Spring的Web服务应用程序

1.简介 这是一个漫长的等待,但是我终于发布了一个关于使用Spring创建第一个基于SOAP的Web服务应用程序的教程。 JAX-WS (用于XML Web服务的Java API)是用于以XML格式创建Web服务的一组API,我们最常将其称为基于SOAP的Web服务 &…