资讯专栏INFORMATION COLUMN

JS中涉及到的JSON以及JSON数据的解析

Muninn / 260人阅读

摘要:简单说,就是由中的对象和数组组合而成,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。例如会执行再弹出并不会判断中的字符串是否合法,而且还会执行其中的代码。

JSON是什么?

定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,同样也是一种常用的数据交换格式,与XML类似。它采用键值对的方式来组织。

格式

JSON数据的书写格式是:名称/值对 如:{name:value,...}
逗号相隔的为同级元素,还可嵌套包含多层。

如下:

{"list1":[{"name":"A","sex":"female"},{"name":"B","sex":"female"},...],"list2":[{"name":"X","sex":"male"},{"name":"Y","sex":"male"},...],...}

两种结构

从上面的代码就可以看出 list1为下面{"name":"A","sex":"female"},{"name":"B","sex":"female"},...的父层(list2同理)所以说,json既可以表达一个简单的key/value,也可以表达一个复杂的Map或List。
简单说,json就是由javascript中的对象和数组组合而成,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

1.数字(整数或浮点数)
2.字符串(双引号中)
3.逻辑值(true 或 false)
4.数组(在方括号中)
5.对象(在花括号中)
6.null

优点

1.易于人们阅读和编写,同时也易于机器解析和生成;
2.是独立于语言的,也就是说不管什么语言,都可以解析json,只需按json规则来就好;
3.json相对于XML来说,长度小,可大大减小带宽(网络传输中);
4.json读写速度比XML快。

JSON数据的解析

对于json的解析有两种方式:eval()JSON.parse()

 var jsonobj = eval("("+jsondata+")");
 var jsonobj = JSON.parse(jsondata); 

一般,在代码中使用eval()是很危险的!特别是用其执行第三方的JSON数据(包含恶意代码)时,尽可能使用JSON.parse()解析,该方法还可以捕捉JSON中的语法错误。

例如:

var jsondata = {
    "staff":[
        {"name":"A","age":alert(123)},
        {"name":"B","age":30},
        {"name":"C","age":35}
    ]
}
var jsonobj = eval("("+jsondata+")"); //会执行alert(123)
alert(jsonobj.staff[0].name);//再弹出"A"

eval()并不会判断js中的字符串是否合法,而且还会执行其中的js代码。所以说无论何时在js中使用eval()都危险。

var jsondata = {
    "staff":[
        {"name":"A","age":alert(123)},
        {"name":"B","age":30},
        {"name":"C","age":35}
    ]
}
var jsonobj = JSON.parse(jsondata); //会在控制台抛出错误--->字符串不合法(语法错误)
alert(jsonobj.staff[0].name);//不执行

实际中使用JSON.parse()来解析json数据很适合。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80235.html

相关文章

  • 百度java学习笔记

    摘要:一般在存当前含有当前时间的实体时,只需要配置好数据库的存储字段即可。基本代码部分循环的写法 这几天初步了解了百度云的后台架构部分,当然了,自己了解的仅限于后台java相关的部分,先说一下客户端这边使用的技术:1、spring boot : 与前端进行直接交互的服务是用spring来实现的(后台服务还需要调用其他的基础服务,如redis 数据库服务 订单服务 cdn服务 openstac...

    codeGoogle 评论0 收藏0
  • 代码解析 | '树'数据结构转化

    摘要:也正是引用类型的数据的这个特点,保证了我们的无论多少层的子元素都能被正确的穿到了对应的父元素上五总结丈高楼始于平地,打好基础知识异常重要文章出自成都社区,欢迎大家的加入,和我们一起讨论学习 一、问题描述 相信做前端的小伙伴都有遇到过将一个平铺的 ‘树’ 结构转换成一个真正的 ‘树’ 结构,比如说下面这种: var _JSON_ = [ {id: 7, name: 猪,...

    Scholer 评论0 收藏0
  • WEB程序前后端数据交互流程

    摘要:说明我写这篇文章的目的其实是想科普一下基础的数据传输和交互流程,其实也就是写协议相关的一些东西。同样,相对于后端程序来说也无外乎就是一大堆有一定意义的字符串,而对于脚本来说,就是表示一个数据对象。 说明 我写这篇文章的目的其实是想科普一下基础的数据传输和交互流程,其实也就是写http协议相关的一些东西。而写这篇文章也主要是源于最近和长久以来很多人问的问题都是有关于这块的(可能问题并不是...

    oysun 评论0 收藏0
  • Express基本使用

    摘要:前言列表项目是一个简介而灵活的应用框架提供的一系列强大特性帮助你创建各种应用,和丰富的工具。返回的对象是一个键值对,当为的时候,键值对中的值就为或形式,为的时候,则可为任何数据类型。以上两行代码已经覆盖了大部分的使用场景。 前言 列表项目Express是一个简介而灵活的node.js Web应用框架提供的一系列强大特性帮助你创建各种 Web 应用,和丰富的HTTP工具。 正文 一个...

    netmou 评论0 收藏0
  • Express 实战(六):构建 API 接口

    摘要:状态码的正确使用。解析请求获取随机数范围并将生产的结果以格式返回。在代码的最后,我们会在合法的参数返回内生成随机数并将结果返回给客户端。虽然示例很简单,但是它已经包含了使用构建的基本流程解析请求,设置状态码,返回响应数据。 showImg(https://segmentfault.com/img/remote/1460000010820713); 在介绍了那么多 Express 核心概...

    AnthonyHan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<