JavaScript JSON数据格式
JSON简介
- JSON = JavaScript Object Notation:js对象标记法,是一种轻量级的数据交换格式
- JSON基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据
- JSON字符集必须是UTF-8,JSON的字符集规定必须用双引号“ ”,键名也必须用双引号“ ”
- 任何支持的数据类型都可以通过JSON来表示
- JavaScript内置了JSON的解析
- JSON本质就是字符串
<script>var obj = {name : "OliGit", age : 20};//这是一个js对象// console.log(obj);// console.log(typeof obj);var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串console.log(jsn);console.log(typeof jsn);</script>
JSON语法
JSON语法是JavaScript对象表示语法的子集
JSON语法规则
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON值可以是
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
<script>// json对象表示{"name":"OliGit","age":23}// JSON本质上是字符串// js数组表示var arr = ["OliGit", 23, true];// json数组表示["OliGit", 23, true]// json数组对象组合嵌套使用[{"name":"aaa","age":22},{"name":"bbb","age":23}]</script>
JSON的解析和序列化
一般情况下,我们的json数据都是从服务端获取到的,获取的json数据是以字符串的形式返回的。这个字符串虽然是json格式的,但是不能被直接使用,我们必须将该字符串转化为一个js对象才能正常解析它
JavaScript函数eval()可用于将JSON文本转换为JavaScript对象
eval()函数可编译并执行任何JavaScript代码。这隐藏了一个潜在的安全问题。(如果JSON中 包含恶意代码也会被直接执行)使用JSON解析器将JSON转换为JavaScript对象是更安全的做法。JSON解析器只会识别JSON文本,而不会执行。
JSON的解析
将JSON数据转换成JS对象
语法:JSON.parse()
var obj = {name : "OliGit", age : 22};//这是一个JS对象var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串// JSON字符串转JS对象:使用JSON.parse()方法var json2obj = JSON.parse(jsn);console.log(json2obj);//{name : "OliGit", age : 20}console.log(typeof json2obj);//objectalert(json2obj.name);
JSON的序列化
将JavaScript对象转换成JSON数据(字符串)
语法:JSON.stringify()
var obj = {name : "OliGit", age : 22};//这是一个JS对象var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串// JS对象转JSON字符串:使用JSON.stringify()方法var obj2json = JSON.stringify(obj);console.log(obj2json);//{"name" : "OliGit", "age" : 22}console.log(typeof obj2json);//string
筛选对象键值
JSON.stringify(参数1, 参数2, 参数3)
:JS对象转JSON字符串
- 参数1:要转换JS对象或数组
- 参数2:(可选),数组或函数
a、如果参数2是一个数组,则仅转换数组中指定的属性
b、如果参数2为函数,则将调用该函数,并传入每个成员的键和值 - 参数3:(可选)文本缩进、空格和换行符
var obj = {name : "OliGit", age : 22, sex : "男"};//这是一个JS对象// var obj2json = JSON.stringify(obj);// var obj2json = JSON.stringify(obj, ["name", "sex"]);//仅转换数组中的name和sex属性// var obj2json = JSON.stringify(obj, sex);function sex(key, value){if(value == "男"){return "女";};return value;}var obj2json = JSON.stringify(obj, null, 6);//每一个数据前都有6个空格console.log(obj2json);console.log(typeof obj2json);
JSON.parse(参数1, 参数2)
:JSON字符串转JS对象
- 参数1:要转换JSON字符串
- 参数2:(可选)在parse函数返回之前处理结果的函数,处理每个成员的键和值
var jsn = '{"name" : "OliGit", "age" : 20, "sex" : "男"}';//这是一个json字符串// var json2obj = JSON.parse(jsn);var json2obj = JSON.parse(jsn, sex);function sex(key, value){if(value == "男"){return "女";};return value;}console.log(json2obj);console.log(typeof json2obj);
JavaScript JSON数据格式相关推荐
- XML和JSON数据格式对比
概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...
- Ajax---使用json数据格式输出数据
将Ajax得到的数据使用json数据格式输出 1.项目清单 2.代码 2.1.Procince类代码 2.2.ProvinceDao类代码 2.3.QueryJsonServlet类代码 2.4.Te ...
- JSON 数据格式解析(转)
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.本文将快速讲解 JSON 格式,并通过代码示例演示如 ...
- Ajax系列之JSON数据格式
JSON数据格式 JSON是什么 JSON是一种轻量级的数据交换格式 JSON文件时独立的,扩展名是".json"该文件中允许保存JSON格式的数据 注意: 在JSON文件中字符串 ...
- JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式
JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式 数据格式: json数据格式:属于轻量级数据格式,是javascript的一种描述数据的格式.具有易于解析,语法简单 ...
- 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- 数组转json去除首尾引号_诞生于JavaScript,json的前世今生
诞生于JavaScript,json的前世今生 json含义 在开始之前,问个问题,什么是json? a:我猜它应该是某一门高深的技术(语重心长) b:json这个词为啥谷歌翻译?是啥新词语嘛?是不是 ...
- JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用
json | json-c使用入门 这篇讲的也不错,抽空看下(网络传输json数据) https://www.bilibili.com/video/av669454528?p=3&spm_id ...
- json数据格式了解
json数据格式介绍: https://en.wikipedia.org/wiki/JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 json语法 ...
最新文章
- react hooks使用_如何使用Hooks将React类组件转换为功能组件
- Python编程入门到实践 - 笔记( 4 章)
- 强化学习之三:双臂赌博机(Two-armed Bandit)
- 这些你耳熟能详的“外国名牌”,其实都是中国的
- Dubbo监控平台安装
- HDLBits答案(17)_Verilog有限状态机(4)
- js获取当前页面url网址等信息
- BZOJ3527: [Zjoi2014]力 [FFT]
- Spring Data Redis:Sentinel的高可用性
- fcn从头开始_从头开始有营销问题
- 带父节点的平衡二叉树_Python算法系列—深度优先遍历算法【二叉树】
- 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)
- python大佬养成计划-----多进程
- webpack初体验_使用webpack打包js文件_json文件_使用webpack开发模式_生产模式打包---webpack工作笔记003
- java jdbc sql 参数_java – Postgresql JDBC表值参数
- centos7网卡编辑_Centos7修改网卡名称
- Java中PreparedStatement和Statement区别
- 基于微信小程序的点餐系统设计
- ubuntu安装ipython3_ubuntu下ipython的安装
- IP地址定位之IP画像——如何形成IP用户画像?
热门文章
- linux yum选择版本mysql_linux yum安装指定版本mysql
- antd 能自适应吗_Antd表格滚动 宽度自适应 不换行的实例
- JS的基本语法知识概括(ECMA、DOM、BOM)
- 小汤学编程之jQuery学习day01——简介、入门、选择器
- Opencv3.0.0安装包
- 【Alpha阶段】第七次scrum meeting
- 在C/C++函数中使用可变参数
- Hadoop ecosystem
- 掌握 Ajax,第 11 部分: 服务器端的 JSON
- C#.Net 常用函数和方法集