js如何操作json字符串
js如何操作json字符串
js如何操作json字符串一、要想熟练的操作json数据,就先要了解json数据的结构,json有两种结构:对象和数组
1、对象
var jsonObj= {"str":"abc","intstr":1322323456,"max":6753,"time":"2012-10-19"};
2. 数组是值(value)的有序集合。一个数组以“[” 开始,“]”结束。值之间运用 “,”分隔。例如:
var jsonList=
[
{
"str":"abc",
"intstr":1322323456,
"max":6753,
"time":"2012-10-19"
},
{
"str":"cde",
"intstr":782144556,
"max":15400,
"time":"2012-10-19"
}
];
一个详细的 json 格式数据实例
// 描述一个人 var person = { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true } // 获取这个人的信息 var personAge = person.Age; // 描述几个人 var members = [ { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true }, { "Name": "John", "Age": 20, "Company": "Oracle", "Engineer": false }, { "Name": "Henry", "Age": 45, "Company": "Microsoft", "Engineer": false } ] // 读取其中John的公司名称 var johnsCompany = members[1].Company; // 描述一次会议 var conference = { "Conference": "Future Marketing", "Date": "2012-6-1", "Address": "Beijing", "Members": [ { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true }, { "Name": "John", "Age": 20, "Company": "Oracle", "Engineer": false }, { "Name": "Henry", "Age": 45, "Company": "Microsoft", "Engineer": false } ] } // 读取参会者Henry是否工程师 var henryIsAnEngineer = conference.Members[2].Engineer;
二、在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
var obj = eval('(' + strJson字符串 + ')');
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
然后,就可以这样读取:
Alert(obj.name);
Alert(obj.sex);
特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会抛出语法异常。
三、JSON的优点
1、基于纯文本,跨平台传递极其简单;
2、Javascript原生支持,后台语言几乎全部支持;
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
5、容易编写和解析,当然前提是你要知道数据结构;
6、JSON的缺点当然也有,但在作者看来实在是无关紧要的东西,所以不再单独说明。
四、JSON的格式或者叫规则
JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。
1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号"",以便于不同语言的解析。
5、JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null 这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。
- js搜索功能的实现(前端JavaScript实现本地模糊搜索功能的方法实例)
- nodejs游戏服务端框架(如何写Node.JS版本小游戏)
- jsarray操作技巧(JS数组reduce你不得不知道的25个高级用法)
- react组件分析(react-diagram 序列化Json解读案例分析)
- html5长图拖动(html5 拖拽及用 js 实现拖拽功能的示例代码)
- js中toFixed() 的使用
- vue多个对象实现双向数据绑定(利用js实现Vue2.0中数据的双向绑定功能)
- 常用JS验证函数
- js实现网页特效(利用原生js模拟直播弹幕滚动效果)
- js的replace的用法
- js如何解决iphone异形屏适配(Html5适配iphoneX刘海屏的简单实现)
- js简单小游戏代码(用JS实现飞机大战小游戏)
- js的遍历数组方法(JS中数组常用的循环遍历你会几种)
- jscanvas画折线图(js+canvas实现代码雨效果)
- angularjs数据绑定类指令及作用(详解Angular数据绑定及其实现方式)
- js tab栏案例(JavaScript实现Tab栏切换特效)
- 赢麻了 富士公布2021年度财报 营利同比增长240(富士公布2021年度财报)
- 医事文化谈屑 | 古人的名 字 号(医事文化谈屑古人的名)
- ()
- 网友很惭愧,自己写了很多年的字,到头来还不如一名小学生写的好(自己写了很多年的字)
- 中华第一楷 张瑞龄 86岁高龄,苦练楷书71年,一幅字卖593万(中华第一楷张瑞龄)
- 冯骥才 年意(冯骥才年意)
热门推荐
- nodejs的广播机制(node.js如何自定义实现一个EventEmitter)
- mysql架构图(深入了解Mysql逻辑架构)
- python3.5 tkinter教程(解决python3.5 正常安装 却不能直接使用Tkinter包的问题)
- linux解压zip文件的命令(Linux gzip 命令的使用)
- js获取微信版本号
- php 大文件切片(PHP大文件切割上传功能实例分析)
- python中if条件语句如何使用(Python中如何使用if语句处理列表实例代码)
- vue请求token无效(关于Vue 消除Token过期时刷新页面的重复提示问题)
- 申请云服务器后需要做哪些(云服务器网站承载量一般有多大?一个云服务器能够放几个网站?)
- dedecms怎么判断授权(DedeCms模板防盗以及安全设置的一些小技巧)