JSON基础

文档

概述

JSON,JavaScript Object Notation,是一种共享数据的格式。

顾名思义,JSON源自JavaScript编程语言,但可用于多种语言,包括Python,Ruby,PHP和Java。

JSON类似XML,只是一种显示数据的格式,要对数据进行操作的时候,需要把JSON数据转为其他格式。

JSON使用.json作为文件扩展名。当以其他文件格式(如.html)定义时,它可以作为JSON字符串出现在引号内,也可以是分配给变量的对象。此格式易于在Web服务器与客户端或浏览器之间传输。

用于序列化对象,数组,数值,布尔值或者null。一个JSON对象由一系列的key:value组成,并由{}包裹,key必须为字符串,且由双引号包裹。

{ "first_name" : "Sammy", "last_name": "Shark",  "online" : true, }
JSON = null
    or true or false
    or JSONNumber
    or JSONString
    or JSONObject
    or JSONArray

用于

存储数据

根据用户输入生成数据结构

客户端服务器间的数据传输

配置和验证数据

parse与stringify

包含两个方法

  • JSON.parse将字符串解析为JSON对象
  • JSON.stringify将JSON对象转换为字符串
var obj = {"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}

var s = JSON.stringify(obj)

//s = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}'

var o = JSON.parse(s)

除此之外也可以使用eval,解析 JSON 文本,然后生成 JavaScript 对象(但是还是推荐parse)。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")");

一个JSON对象实例如下

{
  "squadName" : "Super hero squad",
  "homeTown" : "Metro City",
  "formed" : 2016,
  "secretBase" : "Super tower",
  "active" : true,
  "members" : [
    {
      "name" : "Molecule Man",
      "age" : 29,
      "secretIdentity" : "Dan Jukes",
      "powers" : [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name" : "Madame Uppercut",
      "age" : 39,
      "secretIdentity" : "Jane Wilson",
      "powers" : [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    },
    {
      "name" : "Eternal Flame",
      "age" : 1000000,
      "secretIdentity" : "Unknown",
      "powers" : [
        "Immortality",
        "Heat Immunity",
        "Inferno",
        "Teleportation",
        "Interdimensional travel"
      ]
    }
  ]
}

访问属性值

访问JSON对象的属性值可以通过superHeroes.hometownsuperHeroes["active"]

JSON同样支持链式访问superHeroes["members"][1]["powers"][2]

与JavaScript对象比较

//JS对象
var user = {
    first_name: "Sammy",
    last_name : "Shark",
    online    : true,
    full_name : function() {
       return this.first_name + " " + this.last_name;
    }
};
//user.first_name 
//user.full_name()


//JSON对象
var sammy = {
  "first_name"  :  "Sammy",
  "last_name"   :  "Shark",
  "online"      :  true
}
//sammy.first_name
//sammy.last_name
//sammy.online
  1. JSON可被任何编程语言使用,而JavaScript对象只能通过JavaScript编程语言直接使用。

  2. 语法方面,JavaScript对象类似于JSON,但是JavaScript对象中的key没有引号。而且,JavaScript对象在传递给值的类型方面受到的限制较少,可以将函数用作值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值