JSON入门教程(适合初学者)

JSON入门教程

 

JSON(JavaScript Object Notation、JavaScript 对象表示法) 是一种轻量级的数据交换格式。JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。

JSON(JavaScript Object Notation)是一种基于文本的标准数据交换格式,使应用程序通过计算机网络交换数据。因为JSON独立于编程语言和计算平台,因此用在 Python、Ruby,Java/EE,JavaScript,C#/.Net,PHP等编程语言写的程序,可以很容易的使用和产生JSON数据。而与JSON相关的API和工具十分丰富,这让你很容易的将JSON运用在你喜爱的编程语言,IDE和运行环境里。特别指出,JSON文本格式在语法上与创建JavaScript对象的代码相同,由于这种相似性,无需解析器,JavaScript程序能够适用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。此外,流行的NoSQL数据库,诸如MongoDB和ConchBase,都是基于JSON的。

 

先了解,XML与JSON比较

通过一个实例的比较来真实的说明一下XML与JSON的区别:

  1. 使用XML表示中国部分省市的数据如下:

<?xml version="1.0" encoding="utf-8" ?>

<country>

    <name>中国</name>

    <province>

        <name>山东</name>

        <citys>

            <city>青岛</city>

            <city>临沂</city>

        </citys>    

    </province>

    <province>

        <name>广东</name>

        <citys>

            <city>广州</city>

            <city>深圳</city>

            <city>珠海</city>

        </citys>   

    </province>

    <province>

        <name>湖北</name>

        <citys>

            <city>武汉</city>

            <city>黄冈</city>

        </citys> 

    </province>

</country>

 

  1. 使用JSON中国部分省市数据如下:

var country =

    {

        name: "中国",

        provinces: [

            { name: "山东", citys: { city: ["青岛", "临沂"]} },

            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },

            { name: "湖北", citys: { city: ["武汉", "黄冈"]} }

        ]

    }

  • 从编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。而JSON读起来更像是一个数据块,读起来比较费解,不过对人读起来费解的语言,恰恰是适合机器于都的,所以通过JSON是的索引contry.provinces[0].name就可以读取到“山东”这个值
  • 从编码的手写难度来说,XML还是更简单一些,好读也就意味着好写;不过JSON写出来的字符明显就少很多;去掉空白制表以及换行的话,JSON基本上就是有用数据,而XML却包含很多重复的标记字符。

 

JSON语法

符号

说明

[]中括号

表示数组

{}

表示对象

:冒号

key和value之间的分隔符

,

用于分隔每一个单独的数据对象

 

基本数据以"键:值"对的形式出现,例如:

    "name": "张三"

 

对象

JSON 对象使用在大括号中书写,对象可以包含多个 key/value(键/值)对两个"键:值"对以逗号分隔,例如,定义名为people对象:

    "people":{

       "ID": 1001,

       "name": "张三",

       "age": 24

}

var people={

       "ID": 1001,

       "name": "张三",

       "age": 24

}

key必须是字符串,value可以是合法的JSON数据类型(字符串,数字,对象,数组,布尔值或者null);key和value中适用冒号(:)分割;每个键值对适用逗号(,)分割。

可以使用点号(.)来访问对象的值:people.name 代表 张三

JSON 是一种纯数据格式,它只包含属性,没有方法。

 

数组

JSON 数组在中括号中书写,如定义名为sites的数组:

"sites":[ "Google", "Runoob", "Taobao" ]

或 var sites = [ "Google", "Runoob", "Taobao" ]

可以使用索引值来访问数组:sites[0],代表"Google"

 

方括号中每个数据也可以json对象形式出现,例如:

    "employees":[

        {"firstName":"John", "lastName":"Smith", "age":35},

        {"firstName":"Jane", "lastName":"Smith", "age":32}

    ]

 

JSON 值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑(布尔)值(true 或 false)

数组(在中括号中)

对象(在大括号中)

Null

 

下面给出几个实例

 

在网页(html文件)的使用

在网页(html文件)使用JSON,一般是JSON和JavaScript结合使用,用JSON存数据,用JavaScript操作数据。

 

例1、代码如下:

<html>

<head>

<meta charset="utf-8">

<title>Json测试实例</title>

</head>

<body>

<h2>通过 JSON 字符串来创建对象</h3>

<p>

First Name: <span id="fname"></span><br />

Last Name: <span id="lname"></span><br />

</p>

<script type="text/javascript">

var txt = '{"employees":[' +

'{"firstName":"Bill","lastName":"Gates" },' +

'{"firstName":"George","lastName":"Bush" },' +

'{"firstName":"Thomas","lastName":"Carter" }]}';

 

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

 

document.getElementById("fname").innerHTML=obj.employees[1].firstName

document.getElementById("lname").innerHTML=obj.employees[1].lastName

</script>

</body>

</html>

保存为 json01.html,用浏览器打开这个页面(双击json01.html文件即可),它会生成如下所示结果:

 

例2、代码如下:

<html>

<head>

<meta charset="utf-8">

<title>Json测试实例</title>

</head>

<body>

<h2>使用 JSON 的例子</h2>

<p id="p"> </p>

<!-- <script type="text/javascript">可简化为 <script> -->

<script type="text/javascript">

var site=[

{"name":"小明","age":8},

{"name":"小红","age":9},

{"name":"小灰","age":7},

]

 

var str = " ";

for(var i = 0 ; i < site.length;i++){

str +="姓名:"+site[i].name +"  "+"年龄:"+site[i].age+"<br>";

}

 

document.getElementById("p").innerHTML = str;

 

</script>

</body>

</html>

保存为 json01.html,用浏览器打开这个页面,它会生成如下所示结果:

 

关于这方面的更多知识可阅读:

JSON基本用法

https://blog.csdn.net/LPLIFE/article/details/79761098

 

一个 JSON 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json。下面实例演示.json文件的使用。

例3、演示.json文件的使用,本例使用了两个文件,一个是item.json,一个是read.html。都可以用记事本建立,注意文件名的后缀(扩展名)。放在一个文件夹中。

item.json文件内容如下

[  

{  

    "name":"张三丰",

    "sex":"男",

    "email":"[email protected]"

},  

{  

    "name":"李四文",

    "sex":"男",

    "email":"[email protected]"

},  

{  

    "name":"王二妞",

    "sex":"女",

    "email":"[email protected]"

}  

]

 

read.html文件内容如下:

<!DOCTYPE HTML> 

<html> 

<head> 

<meta charset="UTF-8" /> 

<title>MODEL PAGE</title> 

<!-- js/jquery-1.10.2.min.js  可用在线的 官方:http://code.jquery.com/jquery-1.10.2.min.js  百度:http://libs.baidu.com/jquery/1.10.2/jquery.min.js-->

<script type="text/javascript" src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> 

<script type="text/javascript"> 

    var fun = function () 

    { 

        $.getJSON ("item.json", function (data) 

        { 

            $.each (data, function (i, item) 

            { 

                $ ("#disp").append ("<h3>" + item.name + "</h3>"); 

                $ ("#disp").append ("<p>" + item.sex + "</p>"); 

                $ ("#disp").append ("<p>" + item.email + "</p>"); 

            }); 

        }); 

    } 

</script> 

</head> 

<body> 

    <input type="button" value="fun提交" οnclick="fun();" /> 

    <div id="disp"></div> 

</body> 

</html>

 

用浏览器打开这个页面(说明:推荐用Edge浏览器;用IE11、Google Chrome点击页面上的“fun提交”按钮无反应),它会生成如下所示结果:

 

 

在 Python 中使用 JSON

可以使用包,如demjson、 json

Demjson包是第三方提供的包,需要下载安装; json包内置的(不需要下载安装)。

 

先介绍json包的使用

JSON文件的读写

使用python往data.json文件中写入数据,若文件不存在将建立

import json

data = [{

'name':'kingsan',

'age':'23'

}]

with open('data.json','w') as file:

       file.write(json.dumps(data))

 

运行显示如下:

 

读取data.json文件中的数据

import json

with open('data.json','r') as file:

    str = file.read()

    data = json.loads(str)

    print(data)

 

运行显示如下:

 

Demjson包的使用

【查看python第三方模块(库、包)是否安装及其版本号

 

在cmd中,输入如下的命令:

python -m pip list 或 pip list

 

若安装了多个python版本,查看可由X.Y指定python版本关联的模块(库、包)情况:

py -X.Y -m pip list

 

Python模块(库、包)安装方法

在cmd中(Windows命令行窗口中),输入如下的命令:

pip install 模块(库、包)名

 

若安装了多个python版本,在cmd中使用 py 启动器命令配合 -m 开关选项,为指定Python版本安装模块(库、包):

py -X.Y -m pip install 模块(库、包)名

其中X.Y代表Python版本,多余的部分舍弃如3.6.5,取3.6,3.7.4,取3.7

 

demjson有两个 函数

encode 将 Python 对象编码为 JSON 字符串表示。语法

demjson.decode(self, txt)

 

decode 将 JSON 编码的字符串解码为 Python 对象。语法

demjson.encode(self, obj, nest_level=0)

 

下载和安装 Demjson之后,引入demjson可使用语句:import demjson

例、

import demjson

d = {"id":"26885074","title":"叶问4:完结篇", "rate":7.0}

js_str = demjson.encode(d,encoding='utf-8')

print("encode结果:")

print(js_str)

js_str1 = "{id:'26885074',title:'叶问4:完结篇', rate:7.0}"

js_str2 = "{'id':'26885074','title':'叶问4:完结篇' , 'rate':7.0}"

js_str3 = '{"id":"26885074","title":"叶问4:完结篇", "rate":7.0}'

print("decode结果:")

data = demjson.decode(js_str1)

print(data)

data = demjson.decode(js_str2)

print(data)

data = demjson.decode(js_str3)

print(data)

参见下图:

 

 

深入学习:

http://www.json.org.cn/index.htm

http://www.json.org/json-zh.html

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章