JSON基础

来源:互联网 发布:文华财经mac版 编辑:程序博客网 时间:2024/06/01 23:04

JSON基本概念

  • JSON:javaScript对象表示法(JavaScript Object Notation)
  • JSON是存储和交换文本信息的语法,类似XML。它采用键值对的方式来组织,易于人们阅读和编写,同时也易于机器解析和生成
  • JSON其实是文本信息的一种语法,所以它独立于语言,也就是说不管什么语言,都可以解析json,只需要按照json的规则来就行

JSON与XML比较

  • json的长度和xml格式比起来很短小
  • json读写的速度更快
  • json可以使用JavaScript内建的eval方法进行解析(这个方法很危险),转换成JavaScript对象,非常方便

JSON语法规则

JSON格式:名称/值对(如:”name”:”小明”)
JSON的值可以是下面这些类型

  1. 数字(整数或浮点数),比如123,1.23

  2. 字符串(在双引号中)

  3. 逻辑值(true或false)

  4. 数组(在[]中)

  5. 对象(在{}中)

  6. null

JSON数据列子

{    "students":[        {"name":"小明","age":17},        {"name":"小红","age":20},        {"name":"小强","age":19}    ]}

JSON解析

1. eval方法

  • 当json数据格式正确时:
var data = '{    "students":[        {"name":"小明","age":17},        {"name":"小红","age":20},        {"name":"小强","age":19}    ]}';var obj = eval('('+data+')');console.log(obj.students[0].name); //控制台打印出 小明
  • 当json数据错误时,如:把小明的年龄改为alert(17)
var data = '{    "students":[        {"name":"小明","age":alert(17)},        {"name":"小红","age":20},        {"name":"小强","age":19}    ]}';var obj = eval('('+data+')');console.log(obj.students[0].name);//首先弹出对话框,内容17;其次控制台打印出 小明

总结:eval方法不但解析了json字符串,还执行了json字符串中的一些方法,不推荐使用,没有安全性
2.parse方法

  • 当json数据格式正确时:
 var data = '{    "students":[        {"name":"小明","age":17},        {"name":"小红","age":20},        {"name":"小强","age":19}    ]}';var obj = JSON.parse(data);console.log(obj.students[0].name); //控制台打印出 小明
  • 当json数据错误时,如:把小明的年龄改为alert(17)
 var data = '{    "students":[        {"name":"小明","age":alert(17)},        {"name":"小红","age":20},        {"name":"小强","age":19}    ]}';var obj = JSON.parse(data);console.log(obj.students[0].name); //控制台报错,json数据不合法

总结:推荐使用JSON.parse(),可以检验json数据是否合法,安全性高

JSON校验工具:JSONLint

在线校验地址:https://jsonlint.com/