Python中的dump() 和load()以及dumps()和loads()

本身不知道深入,就只能浮於表面,與君共勉之

先把結論寫在前面

1.不加s的標識對json文件的讀寫,將內存中值讀取寫入到json後綴文件,或者將json後綴文件中內容讀取到內存

2.加了s的主要是字符串類型和其他數據類型的互轉

 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。

Python與JSON數據類型對應表:

 

 

 

1、json.dumps()和json.loads()是json格式處理Python的兩種數據類型之間的互轉
  (1)json.dumps()函數是將數據類型字典/列表轉化爲數據類型字符串
  (2)json.loads()函數是將數據轉換字符串轉爲數據類型字典/列表或其他的格式

 2. json.dump()和json.load()是讀取json格式文件內容或者將內容寫入json格式文件中

  (1)json.dump() 將內存中的值傳入到指定json文件中

      (2)json.load() 讀取json文件中內容到內存

import json

string = '{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}'
string2 = 'abcdefg'
list01 = [2, 1, 3, 4, 5]
dit01 = {"name": "test", "type": {"name": "seq", "parameter": ["1", "2"]}}
print(string)
print(type(string))
print(list01)
print(type(list01))
print(dit01)
print(type(dit01))


# <class 'str'>
# [2, 1, 3, 4, 5]
# <class 'list'>
# {'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
# <class 'dict'>
# {'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
# <class 'dict'>

# json.loads是將字符串類型轉換爲dict類型
s = json.loads(string)
print(s)
print(type(s))

# 非鍵值對的字符串不支持轉換爲對應的dict類型
# s2 = json.loads(string2)
# print(s2)
# print(type(s2))

# TypeError: the JSON object must be str, bytes or bytearray, not list
# s1 = json.loads(list)
# print(s1)
# print(type(s1))

string02 = json.dumps(s)
print(string02)
print(type(string02))

print(s.keys())
print(s["name"])
print(s["type"]["name"])
print(s["type"]["parameter"][1])

# None是值,Nonetype是類型。同理,數字1是值,int是類型。注意:在python中是沒有Null的,取而代之的是None
a = None
print(type(a))
b = 1
print(type(b))

a = '[abc]'
print(a[0])

##TypeError: string indices must be integers
abc = '[abc]'
# print(abc['0'])

 

# -*- coding: utf-8 -*-
import json

dict01 = {
    'seatPlanDistributionList': '[{"stdSeatPlanId": "5fc091e05f45b902499ee72c", "stdSeatPlanName": "400 元", "originalPrice": 400.0, "enabled": false, "salesQuantityLimit": "", "soldStocks": 0, "commissionRate": 0}, {"stdSeatPlanId": "5fc091e05f45b902499ee737", "stdSeatPlanName": "200 元", "originalPrice": 200.0, "enabled": false, "salesQuantityLimit": "", "soldStocks": 0, "commissionRate": 0}]',
    'stockOrderType': ['PAPER_TICKET', 'E_TICKET'], 'enterVenueType': ['PAPER', 'ETICKET'], 'stockOrderAuth': [],
    'workTicketType': [], 'realNameCloseAuth': 'FALSE', 'distributionAuth': 'FALSE',
    'distributionId': '5f71ae3757d98e735a697669', 'merchantId': '5ecb71f490ee5b6848ae2454'}
dict02 = {'name': 'wjp', 'age': '22'}
data_list = [8, '22', 1, 22, '星辰']
print(type(dict01))
print(type(dict02))
# dict轉str 使用json.dumps的方法,可以將json對象轉化爲字符串
j_dict01 = json.dumps(dict01)
print(type(j_dict01))
# 列表轉str 使用json.dumps的方法,可以將json對象轉化爲字符串
j_list = json.dumps(data_list, ensure_ascii=False)
print(type(j_list))
print(j_list)

print("++++換行+++")
print("++++indent參數爲縮進的空格數+++")
print(json.dumps(dict02, sort_keys=True, indent=4, ensure_ascii=False))
print("++++現在結束+++")

data_dict = '{"name": "YYY","year": 10000,"height": 170,"home": "四川"}'
data_list = '[8, "22", 1, 22, "星辰"]'
p_dict = json.loads(data_dict)
p_list = json.loads(data_list)
print(type(data_dict))
print(type(data_list))
print(type(p_dict))
print(type(p_list))

filename = 'file03.json'
data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 1000)
with open(filename, 'w') as f:
    json.dump(data, f)

filename = 'file03.json'
with open(filename) as f:
    data = json.load(f)
    print(data)

# 總結:json模塊的load()、dump()用於編碼和解碼JSON數據,處理文件。轉換包含所有合法數據類型的Python對象、JSON數據類型!

 

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