python json数据格式数组内元素递增赋值_利用Python实现JSON格式数据的编码与解码操作...
導讀
JSON (全稱:JavaScript Object Notation )是一種輕量級的數據交換格式,所謂的輕量級,是與 XML 數據結構相比而言的,在描述相同的數據下,JSON 所需的字符比XML 的要少,這就意味著相同意義的數據, JSON 能更快完成傳輸,所需的流量也會減少,所以在移動互聯網中JSON 數據格式會用的更多。
關于 JSON 數據完整概述,可直訪:
JSON 數據類型
JSON 是一種非常靈活,具有高度可定制化的數據格式,其一般由以下幾種數據類型單一或混合組成:
number:整型數據;
boolean:布爾類型數據,true或false;
string:字符串數據;
null:null;
array:數組(Array),類似 Python 的列表 — [];
object:類似 Python 的字典數據 — { Object:value }。
其中,對象(object) 和 數組(array) 為比較特殊且常用的兩種類型:
J?SON 對象
基本格式:
{“Object1”: "value1", “Object2”: "value2", ...}
JSON 對象數據格式與 Python字典類似,同樣以鍵值對形式存在,外層使用大括號{}包裹,Object 為“鍵”,value 為對應的“值”,“鍵”與“值”之間用冒號:間隔,元素間用逗號,間隔,其中 Object 可用數字或字符串表示,value 可以是任意類型的數據,可以是數字、字符串、字典、數組等。
示例:
{
"name": "taitai",
"birthday": "2000-1-1",
"hobby": "['basketball', 'football']",
"score": "{'chinese': '88', 'math': '95', 'english': '82'}"
}
JSON 數組
基本格式:
["element1", "element2", ...]
JSON 數組與 Python 列表數據的格式類似,均是一連串的元素集合,在 JSON 數組一個較為特殊的數據類型,它也可以像對象那樣使用鍵值對,但還是索引使用得多。同樣,其值的類型可以是任意類型。
示例:
[{
"name": "taitai",
"birthday": "2000-1-1",
},
{
"name": "taitai",
"birthday": "2000-1-1",
}
]
JSON 規定字符集必須為 UTF-8 編碼。同時,為了統一解析,JSON 還規定 Object (鍵) 必須使用雙引號""包裹,且當 value(值) 為字符串數據時,也必須用雙引號""包裹。
JSON 編碼 & 解碼
在互聯網中,如果需要傳輸對象數據,就需要先將該對象轉化為 JSON 格式的字符串,這個過程稱為“對象序列化(編碼)”,反之,在接收到 JSON 字符串后,要轉為目標對象使用時,就需要進行 “反序列化(解碼)”,兩者是互逆過程。
Python 數據與 JSON 數據映射關系
Python 數據
JSON 數據
整數、浮點數等數據類型
數字
字符串
字符串
布爾類型(True 、False)
true、false
Null
null
列表、元組
數組
字典
對象
JSON 編碼
Python 提供了一個內置的 json 模塊用于處理 Python數據 與 JSON數據 的相互轉換操作。其中模塊提供的 dumps 和 dump 方法用于將 Python 對象轉換為 JSON 數據,即實現編碼過程。
實例:
# coding=utf-8
import json
# 創建數據
data = {
'name': 'taitai',
'age': 18,
'hobby': ['basketball', 'football'],
'score': {'chinese': '88', 'math': '95', 'english': '82'}
}
print(data)
print(type(data)) # 編碼前數據類型
# dumps 編碼(單行輸出)
data2 = json.dumps(data)
print(data2)
print(type(data2)) # 編碼后數據類型
# dumps 編碼(排版輸出,指定逐層跳格為 4)
data2 = json.dumps(data, indent=4)
print(data2)
# dump方法:將數據編碼,并寫入指定的文件
# 不排版
with open('./data2.json', 'w') as f:
json.dump(data2, f)
# 排版
with open('./data3.json', 'w') as f:
json.dump(data2, f, indent=4)
實例輸出:
{'name': 'taitai', 'age': 18, 'hobby': ['basketball', 'football'], 'score': {'chinese': '88', 'math': '95', 'english': '82'}}
{"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}
{
"name": "taitai",
"age": 18,
"hobby": [
"basketball",
"football"
],
"score": {
"chinese": "88",
"math": "95",
"english": "82"
}
}
同時還會在當前目錄下創建 data2.json 和 data3.json 兩個文件。
JSON 解碼
上述實例實現了 JSON 的編碼操作,前面也說了有編碼就有解碼,這是一個相互伴隨的過程,json 模塊同樣提供了 loads() 和 load() 方法實現 JSON 數據的解碼操作。
實例:
# coding=utf-8
import json
# 創建數據
json_data = r'{"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}'
print("json_data 數據:", json_data)
print("json_data 數據類型:", type(json_data)) #
# 解碼
data = json.loads(json_data)
print("data 數據:", data)
print("data 數據類型:", type(data)) #
print(data['name'])
print(data['hobby'])
print(data['score'])
# 解碼 JSON 文件
with open('./data2.json', 'r') as f: # 使用前面編碼生成的 JSON 文件
data2 = json.load(f)
print("JSON 文件解碼后,內容為:\n", data2)
實例輸出:
json_data 數據: {"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}
json_data 數據類型:
data 數據: {'name': 'taitai', 'age': 18, 'hobby': ['basketball', 'football'], 'score': {'chinese': '88', 'math': '95', 'english': '82'}}
data 數據類型:
taitai
['basketball', 'football']
{'chinese': '88', 'math': '95', 'english': '82'}
JSON 文件解碼后,內容為:
{
"name": "taitai",
"age": 18,
"hobby": [
"basketball",
"football"
],
"score": {
"chinese": "88",
"math": "95",
"english": "82"
}
}
喜歡 (6)or分享 (0)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python json数据格式数组内元素递增赋值_利用Python实现JSON格式数据的编码与解码操作...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转债股中签后亏100%有可能吗?亏了怎么
- 下一篇: 债券中签好不好?新发债会破发吗