美文网首页NVIDIA Jetson working
JSON 入门 (老且无JSON经验程序员)

JSON 入门 (老且无JSON经验程序员)

作者: 童年雅趣 | 来源:发表于2019-04-23 11:45 被阅读13次
什么是JSON

JSON(JavaScript Object Notation, JS 对象符号) 是一种轻量级的数据交换格式

构成: 它基于 ECMAScript (欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
目标:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 语法规则

在 JS 语言中,一切都是对象。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

表示对象:
 {"firstName": "Brett", "lastName": "McLaughlin"}

数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

表示数组:
{ 
  "people":[
  {
    "firstName": "Brett",             
    "lastName":"McLaughlin"         
  },
  {
    "firstName":"Jason", 
    "lastName":"Hunter"
   }
  ]
}
JSON 键/值对

JSON 键值对是用来保存 JS 对象的一种方式,和JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
{"firstName": "Json"}
这很容易理解,等价于这条 JavaScript 语句:
{firstName : "Json"}

JSON与JS对象的关系

很多人搞不清楚JSON和JS对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。

如
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的`

var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON 和 JS 对象互转

PS: 实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}`

PS: 实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

对比JSON 和 XML 语法差异
(一个是简易的语法,一个是规范的标签形式)

JSON:
{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<country>
    <name>中国</name>
    <province>
        <name>黑龙江</name>
        <cities>
            <city>哈尔滨</city>
            <city>大庆</city>
        </cities>
    </province>
    <province>
        <name>广东</name>
        <cities>
            <city>广州</city>
            <city>深圳</city>
            <city>珠海</city>
        </cities>
    </province>
    <province>
        <name>台湾</name>
        <cities>
            <city>台北</city>
            <city>高雄</city>
        </cities>
    </province>
    <province>
        <name>新疆</name>
        <cities>
            <city>乌鲁木齐</city>
        </cities>
    </province>
</country>

相关文章

  • JSON 入门 (老且无JSON经验程序员)

    什么是JSON JSON(JavaScript Object Notation, JS 对象符号) 是一种轻量级的...

  • json-1008

    json入门json实验json在项目中的应用总结 json练习题 json解析练习

  • SpringMVC框架 -- json数据交互

    一.JSON简单介绍: 参考笔记:JSON简单快速入门 二.json数据交互 请求json 输出json 需要请求...

  • json.dumps参数之解

    通过help(“json”) 可以参考json库使用说明 编码后的json格式字符串紧凑输出,且无顺序,其dump...

  • json教程从入门到使用

    json教程从入门到使用 一:入门 简介: JSON(JavaScriptObject Notation)、轻量级...

  • Json Schema 快速入门

    Json Schema 快速入门 JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范。它被写在...

  • Flutter json_serializable库使用

    Dart Json基本的概念入门参考 JSON和序列化 json_serializable的基本使用参考 Flut...

  • 【18】json数据

    1.Json数据 1.1.满足json格式的数据就叫json数据 1.2.json格式:一个json有且只有一个数...

  • JSON Web Token

    JSON Web Token 入门教程

  • day13总结

    json 1.什么是json数据json是一种具有特定语法的数据格式 2.json数据的语法一个json数据有且只...

网友评论

    本文标题:JSON 入门 (老且无JSON经验程序员)

    本文链接:https://www.haomeiwen.com/subject/koeduqtx.html