json相关的一些用法
一. json可以表示3种类型的值:
var book = {
"title" : "A book title",
"authors" : [
"ren jing"
],
edition : 3,
year : 2011
};
var jsonText = JSON.stringify(book);
document.write(jsonText);
1. 对于详细序列化 javascript 使用 JSON.stringify (object )时 ,还可再传入两个参数;
》 第一个参数 为过滤器 ,可以为数组:
var jsonText = JSON.stringify(book,["title","edition"]);
也可以为函数,当传入的为函数时,传入的函数接收两个参数,属性名和属性值:
var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case "authors":
return value.join(",");
case "year":
return 5000;
case "edition":
return undefined;
default:
return value;
}
});
alert(jsonText);
运行结果为:{"title":"A book title","authors":"ren jing","year":5000}
》第二个参数是一个选项,表示是否在JSON字符串中保留缩进,用于控制结果中的缩进和空白符。
若这个参数是一个数值,那它表示每个级别缩进的空格数(最大缩进空格数为10,所有大于10的数会自动转换为10):
var jsonText = JSON.stringify(book,null,10);
若缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符(不再使用空格,最大限制依然为10):
var jsonText = JSON.stringify(book,null,"- -");
有时候我们可以定义一个toJSON()方法,返回其自身的JSON数据格式,更好的进行自定义序列化的需求。
对于序列化对象的顺序,我们应该注意的是:
(1)如果存在toJSON()方法且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
(2)如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
(3)对于第(2)步返回的每个值进行相应的序列化。
(4)如果提供了第三个参数,执行相应的格式化。
2.对于解析json数据,也可以接受另一个参数,该参数是一个函数:
var book = {
"title" : "A book title",
"authors" : [
"ren jing"
],
edition : 3,
year : 2011,
releaseDate : new Date(2015,07,1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText,function(key,value){
if(key =="releaseDate"){
return new Date(value);
}else{
return value;
}
})
alert(bookCopy.releaseDate.getFullYear());
通过添加releaseDate属性,通过序列化将数据序列化为有效的JSON字符串后 ,再进行解析,运行结果为:2015
(将此内容作为自己的个人笔记,参考来源于javascript高级程序设计 第三版)
json相关的一些用法的更多相关文章
- json简介及JsonCpp用法
[时间:2017-04] [状态:Open] [关键词:数据交换格式,json,jsoncpp,c++,json解析,OpenSource] json简介 本文仅仅是添加我个人对json格式的理解,更 ...
- 关于 pgsql 数据库json几个函数用法的效率测试
关于 pgsql 数据库json几个函数用法的效率测试 关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次 ...
- boost json生成和解析用法
json c++库还是有很多的,因为工作上经常使用boost,这里选用boost的json,记录下用法. 举个栗子: 如果我们要生成如下格式的json: { "name":&quo ...
- json相关知识
整理json相关知识: 1.for in 循环获取json中的键(key)与值(value) <!DOCTYPE html> <html lang="en"> ...
- SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法
create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...
- jquery下json数组的操作用法实例
jquery下json数组的操作用法实例: jquery中操作JSON数组的情况中遍历方法用的比较多,但用添加移除这些好像就不是太多了. 试过json[i].remove(),json.remove( ...
- plpgsql 数组、JSON相关
Function Return Type Description Example Result array_append(anyarray,anyelement) anyarray append an ...
- react第十七单元(redux和组件之间的通信,react-redux的相关api的用法)
第十七单元(redux和组件之间的通信,react-redux的相关api的用法) #课程目标 什么是redux-redux react-redux的作用是什么 react-redux如何应用 #知识 ...
- Cocos2d-x数据相关的类用法简介(附示例)
(搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...
随机推荐
- Count the number of possible triangles
From: http://www.geeksforgeeks.org/find-number-of-triangles-possible/ Given an unsorted array of pos ...
- C#和.net的版本
C#1.0:OOP和CTS(delegate)C#2.0:泛型.分部类.静态类.迭代器.匿名方法.委托的协变和逆变.属性访问器可以被单独设置访问级别.可空类型.??操作符C# 3.0:Linq.lam ...
- apk反编译工具
反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...
- webservices接口 file "/axis2-web/listsingleservice.jsp" not found 问题解决
搞了半天 ,原来是services.xml 配置的某个或者某些service 在代码中不存才.扫描的时候找不到对应的service代码所以就会报错
- Delphi控件之---通过编码学习TStringGrid(也会涉及到Panel控件,还有对Object Inspector的控件Events的介绍
我是参考了万一的博客里面的关于TStringGrid学习的教程,但是我也结合自己的实际操作和理解,加入了一些个人的补充,至少对我有用! 学用TStringGrid之——ColCount.RowCoun ...
- 公众号第三方平台开发 获取 component_verify_ticket 2015-07-05 10:16 59人阅读 评论(0) 收藏
8.推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_veri ...
- 【leetcode】Compare Version Numbers
题目描述: Compare two version numbers version1 and version2. If version1 > version2 return 1, if vers ...
- Python Web 方向(一)
Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...
- 【积累篇:他山之石,把玉攻】解决XP 系统 .Net Framework 4安装时出现严重错误 (0x80070643)
第一步: 1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的 的窗口中有个文件夹叫SoftwareD ...
- x
笔记 { 计算机 { 底层 { 程序运行 } 信息学 { 网络 { 网络信息安全 } 算法 { 算法 拟合 编译解释词法分析 } 编程语言 { C语言 嵌入式C++ } 黑客 } } 安卓 { 软件 ...