• 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使用与类型转换的更多相关文章

  1. Spring MVC JSON自己定义类型转换(续)

    前面提到了两种转换类型的方法(Spring MVC JSON自己定义类型转换),这里针对Json转换提供一种更简便的方法. 通过配置全局的日期转换来避免使用麻烦的注解. 首先用到了一个简单的日期工具类 ...

  2. Spring MVC JSON自己定义类型转换

    版权声明:版权归博主全部.转载请带上本文链接.联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/28625071 ...

  3. Json序列化,date类型转换后前端显示错误的解决方案

    1.前台使用Jquery解决 (1)如果我们前台使用Jquery来解决这个问题的话,那么我们首先想到的是我们如何解析这个过程呢,当然我们就想到了自己写一个JavaScript脚本来解析这个过程,当然这 ...

  4. python json基础学习01

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import json #全称(javascript object  ...

  5. Python 序列化模块(json,pickle,shelve)

    json模块 JSON (JavaScript Object Notation):是一个轻量级的数据交换格式模块,受javascript对象文本语法启发,但不属于JavaScript的子集. 常用方法 ...

  6. Golang的Json encode/decode以及[]byte和string的转换

    使用了太长时间的python,对于强类型的Golang适应起来稍微有点费力,不过操作一次之后发现,只有这么严格的类型规定,才能让数据尽量减少在传输和解析过程中的错误.我尝试使用Golang创建了一个公 ...

  7. python - json/pickle

    # import json #将数据类型转换成字符串 # data = {"a":"123"} # a = json.dumps(data) # print(a ...

  8. day29-序列化 json、pickle、shelve

    1.pickle和JSON序列化 如果我们想用文本文件保存一个 Python 对象怎么操作?这里就涉及到序列化的问题,序列化指的是将原本的字典.列表等内容转换成一个字符串的过程. 2.为什么要使用序列 ...

  9. json转实体,json转List实体,json转泛型实体

    1.========================= https://segmentfault.com/a/1190000009523164 package com.thunisoft.maybee ...

随机推荐

  1. 【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)

    1.前言 框框博客在线报时:2018-11-07 19:31:06 当前MySQL最新版本:8.0.13 (听说比5.7快2倍) 官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MyS ...

  2. DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks

    新版本的 DVWA 有新东西,其中一个就是这个 JavaScript 模块了. 玩法也挺特别的,如果你能提交 success 这个词,成功是算你赢了.也看得我有点懵逼. 初级 如果你改成 " ...

  3. windows2012R2安装SQL2005详情!

    用友T3软件报错单据的时候提示1105数据库错误 原因分析:客户使用的是sql2005 express的数据库,账套的物理文件达到了4G. 只能重装SQL的版本,but.... 在window2012 ...

  4. servlet之转发与重定向的区别

    转发(服务器端跳转):  一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...

  5. ubuntu如何安装chromium浏览器并设置成中文版

    在Ubuntu上使用APT安装Chromium有3种方法: 1.在Ubuntu软件中心输入chromium,然后在结果中选择安装即可. 2.在新立得软件包管理器中输入chromium,然后标记安装即可 ...

  6. Docker:pipeline编写基本技巧- jenkins配置通过免交互方式拉取git源码管理仓库的代码

    工作中,从git仓库拉取代码有2种方式:交互式和非交互式 什么是交互式?就是拉取需要权限才能访问的代码时,需要输入密码 免交互式呢? 是通过密钥,私钥的方式,让服务端信任客户端,产生信任后,任何一次客 ...

  7. Vue笔记(props和 mounted)

    1.mounted 1.1mounted中使用$nextTick会导致页面挂掉 mounted() { // 页面卡死 this.$nextTick(() => { this.setUrl() ...

  8. Web后台快速开发框架

    Web后台快速开发框架 Coldairarrow 目录 目录 第1章    目录    1 第2章    简介    3 第3章    基础准备    4 3.1    开发环境要求    4 3.2 ...

  9. python官网几个下载文件的区别

    进入python官方,下载python编译器,提供了如下几个版本进行选择,这些版本分别是什么意思呢? Python 3.7.1 - 2018-10-20 Download Windows x86 we ...

  10. mysql 新建用户并赋予远程访问权限

    不多说直接上代码 [root@demo /]# mysql -u root -p #登录服务器数据库 Enter password:123xxx #1.创建一个新用户 testuser 密码为 tes ...