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

 

 

 

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