javascript
Python--JSON基础
目錄
1.基本介紹
1.1相關知識
1.2解析 JSON 數據
1.3從文件解析JSON數據
1.4生成 JSON 數據
2.案例分析?
2.1案例介紹
?2.2原理分析
2.3代碼展示?
1.基本介紹
1.1相關知識
JSON庫是 Python 內置的一個用于操作 JSON 數據的庫,提供了幾個函數用于解析與生成(或者說反序列化與序列化)JSON 格式的數據。
1.2解析 JSON 數據
JSON庫提供了一個函數loads,用于從 Python 的字符串中解析 JSON 數據。使用它的方法很簡單,只需將含有 JSON 數據的字符串當做參數傳遞給它,它的返回值就是由 Python 中的基礎數據類型組成的對象。
import json data = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = json.loads(data) print(text)得到的結果是:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}?
JSON 的對象類型轉換成了 Python 的dict類型。
JSON 各種數據類型在解析后,對應的 Python 基礎數據類型如下表:
| object(對象) | dict |
| array(數組) | list |
| string(字符串) | unicode |
| number (int) | int, long |
| number (real) | float |
| true | True |
| false | False |
| null | None |
?JSON 數據類型轉化成 Python 數據類型后,就可以按照 Python 的方式來使用了:
import json data = '[1,2,3]'; text = json.loads(data) text.append(4) #調用list的append函數 print(text)得到的結果是:[1, 2, 3, 4]?
1.3從文件解析JSON數據
JSON 庫的另一個函數 load 也是用于解析 JSON 數據的,它與 loads 函數唯一不同的地方在于,它是從文件中解析,比如:?
import json data = open("test.txt","r",encoding = "utf-8") text = json.load(data) #將文件對象傳遞給load函數 print(text) fp.close()這樣 test.txt 文件內的內容,就會被當做 JSON 格式的數據來解析。
注意:load 函數沒有可選參數 encoding ,只要文件對象使用了正確的字符編碼打開文件,load 函數就可以正確的解析數據。?
1.4生成 JSON 數據
與解析的那兩個函數相對應,json 庫也提供了兩個函數:dumps 和 dump ,來將由 Python 基礎數據類型組成的對象轉化成 JSON 數據,使用方法也類似:
import jsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]json = json.dumps(data) #轉化成JSON格式的字符串 print(json)得到的結果是:[{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}]
?注意:這是一個字符串
dumps 沒有可選參數 encoding ,當要轉化的對象含有中文等非 ASCII 字符時,建議指定可選參數 ensure_ascii 為 False 。否則非 ASCII 的字符將會被顯示成 \uXXXX 的形式。
2.案例分析?
2.1案例介紹
有一個字符編碼為 utf-8 的數據文件 step2/2017.txt :?
{"count":3 , "infos": [ {"name":"趙昊" , "age":15 ,"height": 1.83, "sex" : "男性" }, {"name":"龍傲天" , "age":16 ,"height": 2.00, "sex" : "男性"}, {"name":"瑪麗蘇" , "age":15 ,"height": 1.78, "sex" : "女性"} ] }將其按 JSON 格式解析后,將 infos 數組內的三個對象的年齡 age 增加一歲,然后增加一條記錄:
- 名稱:葉良辰,年齡:17,身高:1.87,男性
同時,將 count 的值從3改為4。
注意:所有打開的文件,請在打開文件的函數內及時關閉,以免影響測試代碼讀取數據。
以 JSON 格式解析 step2/2018.txt 的內容,并將其中的數據打印出來。 如果內容成功解析,并且數據填寫正確,將會有如下結果輸出:?
學生數:4
名稱:趙昊,年齡:16,身高:1.83,男性
名稱:龍傲天,年齡:17,身高:2.00,男性
名稱:瑪麗蘇,年齡:16,身高:1.78,女性
名稱:葉良辰,年齡:17,身高:1.87,男性
?2.2原理分析
該題首先讓我們將JSON數據轉化為Python數據進行操作,利用load函數操作之后他會轉換成一個大的字典(dict),字典名為obj,字典內還有一個鍵值對{“count”:3},和一個名為infos的大的列表,該列表內含有三個小字典,修改鍵值對直接賦值即可,修改列表內嵌套的字典,直接用下表+key即可,增加列表元素用append()函數,記得增加字典。
2.3代碼展示?
import jsondef Func():data = open("step2/2017.txt","r",encoding = "utf-8")obj = json.load(data)data.close()#********** Begin *********#obj["count"]=4 #修改鍵值對,把學生數從3改為4obj["infos"][0]["age"]=16obj["infos"][1]["age"]=17obj["infos"][2]["age"]=16obj["infos"].append({"name":"葉良辰","age":17,"height":1.87,"sex":"男性"})#********** End **********#output = open("step2/2018.txt","w",encoding = "utf-8")json.dump(obj,output) #輸出到文件output.close()總結
以上是生活随笔為你收集整理的Python--JSON基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一个脚本-HelloWorld
- 下一篇: java控制单元测试_java – 当单