python中的json的使用

1.什么是json數(shù)據(jù)

  • json是一種數(shù)據(jù)格式杆煞,滿足json格式的數(shù)據(jù)就是json數(shù)據(jù)故硅。
    文件后綴是.json,并且文件中內(nèi)容滿足json格式

2.json格式

  • 一個json中只有一個數(shù)據(jù)爹橱;并且這個數(shù)據(jù)是json支持的數(shù)據(jù)類型的數(shù)據(jù)

json支持的數(shù)據(jù)類型
數(shù)字類型 - 包含所有的數(shù)字萨螺,包括整數(shù)和小數(shù), 例如: 100, 12.5愧驱, -20
字符串 - 使用雙引號括起來字符集, 例如: "123", "abc123", "&*ash"
布爾 - true和false
數(shù)組 - 相當于python中的列表, 使用中括號括起來慰技,括號里面是json支持的任意類型的數(shù)據(jù)
例如:["abc", 100, true], [12, 89, 89, 90]
字典 - 相當于python中的字典, 使用{}括起來,括號里面是鍵值對组砚。
鍵一般是字符串吻商,值是json支持的任意類型的數(shù)據(jù)
{"name": "張三", "age": 18}
特殊值 - null(相當于None), 表示空

3.python中有一個內(nèi)置的模塊用來支持對json數(shù)據(jù)的處理: json

a.將json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù)
b.將python數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)

import json

1.將json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù)

  • loads(字符串) - 將json格式的數(shù)據(jù)轉(zhuǎn)換python對應的數(shù)據(jù)
    注意:這兒的字符串的內(nèi)容必須是json格式的數(shù)據(jù)

json python
數(shù)字 整型/浮點型
字符串 字符串(雙引號會變單引號)
布爾 布爾(true -> True, false -> False)
數(shù)組 列表
字典 字典
null None

# a. 數(shù)字轉(zhuǎn)int/float
py1 = json.loads('100')
print(py1, type(py1))
py2 = json.loads('100.12')
print(py2, type(py2))

# b. 字符串
py3 = json.loads('"json"')
print(py3, type(py3))

# c. 布爾
py4 = json.loads('true')
print(py4)

# d.列表
py5 = json.loads('[100, "abc", true, null]')
print(py5)

# e.字典
py6 = json.loads('{"a": 1, "b":[1, 2], "c": true}')
print(py6)

# 練習1:
# 讀文件中的內(nèi)容
with open('data.json', encoding='utf-8') as f:
    content = f.read()
# 將讀出來的內(nèi)容轉(zhuǎn)換成python數(shù)據(jù)
data_dict = json.loads(content)
print(data_dict['data'][2]['age'])

2.將python數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)

dumps(數(shù)據(jù)) - 將python數(shù)據(jù)轉(zhuǎn)換成內(nèi)容符合json格式的字符串
注意:最終結(jié)果是字符串

python json
int/float 數(shù)字
字符串 字符串(單引號會變雙引號)
布爾 布爾(True - true, False - false)
列表/元祖 數(shù)組
字典 字典

# a. int和float
js1 = json.dumps(100)
print(js1, type(js1))

js1 = json.dumps(100.12)
print(js1, type(js1))

# b.字符串
js2 = json.dumps('hello world')
print(js2)

# c.布爾
js3 = json.dumps(True)
print(js3)

# d.列表糟红、元祖
js4 = json.dumps((10, 'abc', True))
print(js4)
js4 = json.dumps([100, 'aaa', False, None])
print(js4)

# e.字典
js5 = json.dumps({'a': 10, 'b': 'abc', 'c': ['a', 'b']})
print(js5)

# 練習2:添加多個學生信息(姓名艾帐,年齡,電話)盆偿,添加完成后柒爸,將數(shù)據(jù)保存到j(luò)son文件中
# 并且,上次添加的信息不會刪除事扭,下次再添加的時候捎稚,是在上次的基礎(chǔ)上添加的
"""
姓名:
年齡:
電話:
aaa, 12, 12222
"""
# all_students = []   # 保存所有學生的信息

with open('students.json', encoding='utf-8') as f:
    # 從文件中把數(shù)讀出來
    content = f.read()
    # 將數(shù)據(jù)轉(zhuǎn)換成列表
    all_students = json.loads(content)

# while True:
#     name = input('姓名:')
#     age = int(input('年齡:'))
#     tel = input('電話:')
#     # 創(chuàng)建學生對應的字典
#     stu = {'name': name, 'age': age, 'tel': tel}
#     # 保存學生信息
#     all_students.append(stu)
#
#     value = input('是否繼續(xù)(Y/N):')
#     if value == 'N':
#         break

print(all_students)
# 將數(shù)據(jù)寫入文件中
with open('students.json', 'w', encoding='utf-8') as f:
    content = json.dumps(all_students)
    f.write(content)

3.json文件操作相關(guān)方法

  • load(文件對象) - 將文件對象中的數(shù)據(jù)讀出來,并且轉(zhuǎn)換成python對應的數(shù)據(jù)
    (文件對象中的內(nèi)容必須是json格式的數(shù)據(jù))
    dump(數(shù)據(jù), 文件對象) - 將python數(shù)據(jù)轉(zhuǎn)換成json格式的字符串求橄,再寫入文件對象中
print('================')
with open('test.txt', encoding='utf-8') as f:
    content = json.load(f)
    print(content, type(content), sep='\n')


# with open('new.json', 'w', encoding='utf-8') as f:
#     json.dump([1, 2, 3], f)


def yt_dump(obj, file):
    with open(file, 'w', encoding='utf-8') as f:
        strstr = json.dumps(obj)
        f.write(strstr)


yt_dump(['a', 'b', 'c'], 'new.json')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末今野,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谈撒,更是在濱河造成了極大的恐慌腥泥,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啃匿,死亡現(xiàn)場離奇詭異蛔外,居然都是意外死亡,警方通過查閱死者的電腦和手機溯乒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門夹厌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裆悄,你說我怎么就攤上這事矛纹。” “怎么了光稼?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵或南,是天一觀的道長孩等。 經(jīng)常有香客問我,道長采够,這世上最難降的妖魔是什么肄方? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蹬癌,結(jié)果婚禮上权她,老公的妹妹穿的比我還像新娘。我一直安慰自己逝薪,他們只是感情好隅要,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著董济,像睡著了一般步清。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虏肾,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天尼啡,我揣著相機與錄音,去河邊找鬼询微。 笑死,一個胖子當著我的面吹牛狂巢,可吹牛的內(nèi)容都是我干的撑毛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼唧领,長吁一口氣:“原來是場噩夢啊……” “哼藻雌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起斩个,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胯杭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后受啥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體做个,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年滚局,在試婚紗的時候發(fā)現(xiàn)自己被綠了居暖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡藤肢,死狀恐怖太闺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘁圈,我是刑警寧澤省骂,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布蟀淮,位于F島的核電站,受9級特大地震影響钞澳,放射性物質(zhì)發(fā)生泄漏怠惶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一略贮、第九天 我趴在偏房一處隱蔽的房頂上張望甚疟。 院中可真熱鬧,春花似錦逃延、人聲如沸览妖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讽膏。三九已至,卻和暖如春拄丰,著一層夾襖步出監(jiān)牢的瞬間府树,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工料按, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奄侠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓载矿,卻偏偏與公主長得像垄潮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闷盔,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 小學數(shù)學中弯洗,從一年級到六年級一直貫穿著一個內(nèi)容那就是簡便運算,在整數(shù)范圍逢勾、小數(shù)范圍牡整、分數(shù)范圍內(nèi)都做為一個內(nèi)容重復出...
    姜博文寶媽閱讀 255評論 0 0