JSON使用与类型转换
- JSON语法与对象
- JSON方法与使用
一、JSON语法与对象
JSON是英文JavaScript Object Notation(JavaScript 对象表示法)的缩写,是存储和交换文本信息的语法。类似XML,JSON比XML更小更快更简单。
JSON对象采用键值对的结构,所以在JS对象中Object和Array就是JSON对象,Array的索引作为键。但是在JSON的值不能是Function,如果JSON对象中存在Function在被转换成JSON文本的时候会删除该键值对。Date对象也不能以Date的对象形式存在JSON文本中,JSON对象在被转换成JSON文本时会被隐式进行String()转换操作。
正常情况下JSON的值可以是:字符串, 数字, 对象, 数组, 布尔值或 null。
----JSON对象与转换:
var arr = [1,"a",true,{o:"0"}];
console.log(JSON.stringify(arr));//'[1,"a",true,{"o":"0"}]'
二、JSON方法与使用
- JSON.parse(jsoStr)
- JSON.stringify(jsoObj)
浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8),所以需要兼容处理:
var jsoStr = '[1,"a",true,{"o":"0"}]'
var json1 = eval("(" + jsonStr + ")");
var json2 = (new Function("return " + jsonStr))();
eval()方法的应用就不具体描述了,相信大家都懂,我们直接来看json2的实现原理:
new Function()本质上就是用来实例化方法的构造函数,其参数以字符串的形式传入,会被解析为实例化方法的内部代码。所以在前面加上“return ”实质上就实现了JSON对象返回的语句,然后再通过立即执行函数实现了将JSON文本转换成JSON对象的效果。
(function anonymous() {
return [1,"a",true,{"o":"0"}]
})
anonymous就是new Function()内部实例化的方法。
至于JSON.parse()的兼容方法根据我之前的类型转换博客封装就好了,主要注意function和Date对象的转换:类型和原生函数及类型转换(三:终结js类型转换)
JSON使用与类型转换的更多相关文章
- Spring MVC JSON自己定义类型转换(续)
前面提到了两种转换类型的方法(Spring MVC JSON自己定义类型转换),这里针对Json转换提供一种更简便的方法. 通过配置全局的日期转换来避免使用麻烦的注解. 首先用到了一个简单的日期工具类 ...
- Spring MVC JSON自己定义类型转换
版权声明:版权归博主全部.转载请带上本文链接.联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/28625071 ...
- Json序列化,date类型转换后前端显示错误的解决方案
1.前台使用Jquery解决 (1)如果我们前台使用Jquery来解决这个问题的话,那么我们首先想到的是我们如何解析这个过程呢,当然我们就想到了自己写一个JavaScript脚本来解析这个过程,当然这 ...
- python json基础学习01
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import json #全称(javascript object ...
- Python 序列化模块(json,pickle,shelve)
json模块 JSON (JavaScript Object Notation):是一个轻量级的数据交换格式模块,受javascript对象文本语法启发,但不属于JavaScript的子集. 常用方法 ...
- Golang的Json encode/decode以及[]byte和string的转换
使用了太长时间的python,对于强类型的Golang适应起来稍微有点费力,不过操作一次之后发现,只有这么严格的类型规定,才能让数据尽量减少在传输和解析过程中的错误.我尝试使用Golang创建了一个公 ...
- python - json/pickle
# import json #将数据类型转换成字符串 # data = {"a":"123"} # a = json.dumps(data) # print(a ...
- day29-序列化 json、pickle、shelve
1.pickle和JSON序列化 如果我们想用文本文件保存一个 Python 对象怎么操作?这里就涉及到序列化的问题,序列化指的是将原本的字典.列表等内容转换成一个字符串的过程. 2.为什么要使用序列 ...
- json转实体,json转List实体,json转泛型实体
1.========================= https://segmentfault.com/a/1190000009523164 package com.thunisoft.maybee ...
随机推荐
- Redis中5种数据结构的使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- SQLServer之锁定数据库表
用户锁定表注意事项 通过指定锁定方法.一个或多个索引.查询处理操作(如表扫描或索引查找)或其他选项,表提示在数据操作语言 (DML) 语句执行期间覆盖查询优化器的默认行为.表提示在 DML 语句的 F ...
- java拦截器(interceptor)
1.声明式 (1)注解,使用Aspect的@Aspect (2)实现HandlerInterceptor /** * 拦截请求 * * @author Administrator * */ @Comp ...
- 《JAVA程序设计》_第八周学习总结
一.学习内容 1.泛型类声明--15.1知识 可以使用"class 名称"声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如: class People<E> ...
- ASP.NET Core 下自定义权限验证
效果图: 如果没有权限时,显示: 代码: public class AuthorizeAdminAttribute : TypeFilterAttribute { #region 字段 private ...
- golang学习和使用经验总结
学习网址 https://studygolang.com/pkgdoc go标准库网站 https://blog.csdn.net/sanxiaxugang/article/details/60324 ...
- linux查看目录下各个文件大小的命令
linux查看目录下各个文件大小的命令 由于需要经常查看各个文件的具体大小 ,所以这里记一下. 命令如下: du -h --max-depth=1
- [转帖]Windows7/2008中批量删除隧道适配器的方法
https://www.jb51.net/os/windows/479838.html 客户现场的硬件信息总是发生变化 这里查找一下资料 尝试一下. 1.在网卡属性的“网络”中,将“Internet协 ...
- squid3.5缓存代理实践记录
准备: 两台服务器,一台web,一台squid缓存代理 squid机域名:www.dannylinux.top web机IP:12.1.1.1 1.版本: [root@danny squid]# sq ...
- 接口测试(jmeter和postman 接口使用)
接口测试基础知识 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.把前端(client)和后端(server)联系起来,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统 ...