ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSON

2022-05-28 16:33:14  阅读:91  来源: 互联网

标签:XML name 对象 JS JSON 字符串


JSON

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

JSON的语法规则:

JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名

JSON是一个序列化的对象或数组

JSON的值:

值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。

值中的字面值中的英文必须使用小写

对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上下文所述的值由逗号分割的键值对组成,

eg:
 {"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}

数组是由方括号括起来的一组值构成

eg:[3, 1, 4, 1, 5, 9, 2, 6]

字符串与C或者JAVA的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜杠转义。一个字符(character)即一个单独的字符串(character string)。

数字也与C或者JAVA的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

eg:
{"a": 1, "b": [1, 2, 3]}
[1, 2, "3", {"a": 4}]
3.14
"plain_text"

JSON与JS对象的关系:

JSON可以理解为JS的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。

eg:
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON与JS对象互转:

JSON→JS对象    [使用JSON。parse()方法]

JS对象→JSON    [使用JSON.stringify()方法]

var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

常用类型:

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

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

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

JSON和XML的比较:

可读性:JSON和XML的可读性不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负

可扩展性:XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON不可以扩展的。不过JSON在JavaScript主场作战,可以存储JavaScript复合对象,有着XML不可比拟的优势。

编码难度:XML和HTML都有特工的工具编码,在无工具的情况下,XML文档要多很多结构上的字符。

实例比较:

用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表示如下:

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用的带宽。

 

标签:XML,name,对象,JS,JSON,字符串
来源: https://www.cnblogs.com/rabbit000/p/16320939.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有