ホームページ >バックエンド開発 >Python チュートリアル >Pythonのjson標準ライブラリの使い方
JSON (正式名: JavaScript Object Notation オブジェクト表記) は、軽量のテキスト データ交換形式です。JSON のデータ形式は、実際には Python の辞書形式であり、次の内容を含めることができます。角括弧で囲まれた配列。Python ではリストです。
文法形式 : {key1:value1, key2:value2,} キーと値のペア形式 (コロンで区切る)。ペアを接続するにはカンマを使用します
単純なケース: JSONオブジェクト
{ "name": "小明", "age": 18}
複雑なケース: JSON配列
{ "student": [ {"name": "小明", "age": 11}, {"name": "小红","age": 10} ], "classroom": {"class1": "room1", "class2": "room2"}}3. 注1 JSON のキーと値のペアのキー部分は二重引用符
" で囲む必要があります。一重引用符は機能しません (そのため、キーにキーワードが含まれる場合、それらも特徴付けられます)。 js は必須の要件ではありません (そのため、キーにキーワードを含めることはできません)。
{"name":"admin", などの無意味なカンマは使用できません。 "age":18,}, データ末尾の 18 以降のカンマには注意してください。これは使用できません。
: # 格式1:JSON 对象{"name": "admin", "age": 18}# 格式2:JSON 数组{
"student":
[
{"name": "小明", "age": 18},
{"name": "小红", "age": 16},
{"name": "小黑", "age": 20}
]}
:
# #2. json モジュール
リスト、タプル | ##配列|
str | ##string|
True | |
##False | |
None | |
In次に、次の表に示すように、json 形式を Python 組み込み型に変換します。 | |
#オブジェクト | dict |
string | str |
---|---|
int | |
float | |
True | |
False | ##null |
json モジュールの使い方は実はとても簡単です。ほとんどの場合、次の 4 つのメソッドのみを使用する必要があります。 | |
Function | |
##json.dumps(obj) |
json.dump(obj, fp)
json.loads(s) | |
---|---|
| json.load(fp)|
4、 json.dumps()
语法格式: >>> import json # Python字典 >>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True} >>> print(person) {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True} >>> type(person) <class 'dict' # Python字典转换为json字符串 >>> jsonStr = json.dumps(person) >>> print(jsonStr ) {"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true} >>> type(jsonStr) <class 'str'> 从上可以看出json格式和Python格式的区别在于:python格式打印输出是单引号,类型为 使用参数能让JSON字串格式化输出: >>> print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))){ "age": 30, "isonly": true, "name": "\u5c0f\u660e", "tel": [ "888888", "1351111111" ]} 参数解读:
修改分割符类型: >>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-'))){ "age"-30! "isonly"-true! "name"-"\u5c0f\u660e"! "tel"-[ "888888"! "1351111111" ] 文件操作: import json person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}jsonStr = json.dumps(person)with open('test.json', 'w', encoding='utf-8') as f: # 打开文件 f.write(jsonStr) # 在文件里写入转成的json串 查看生成的新文件: 5、json.dump()
语法格式: import json person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}json.dump(person, open('data.json', 'w')) 查看生成的新文件: import json person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ': ')) 再次查看文件:
6、json.loads()
语法格式: >>> import json# Python字典>>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}>>> print(person){'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}>>> type(person)<class 'dict'# Python字典转换为json字符串>>> jsonStr = json.dumps(person) >>> print(jsonStr ){"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}>>> type(jsonStr)<class 'str'># json字符串再转换为Python字典>>> python_obj = json.loads(jsonStr)>>> print(python_obj){'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}>>> print(type(python_obj))<class 'dict'># 打印字典的所有key>>> print(python_obj.keys()) dict_keys(['name', 'age', 'tel', 'isonly']) # 打印字典的所有values>>> print(python_obj.values()) dict_values(['小明', 30, ['888888', '1351111111'], True]) 文件操作: import json f = open('data.json', encoding='utf-8')content = f.read() # 使用loads()方法需要先读文件 python_obj = json.loads(content)print(python_obj) 输出结果: 7、json.load()
语法格式: 文件操作: import json python_obj = json.load(open('data.json','r'))print(python_obj)print(type(python_obj)) 输出结果:
8、总结
三、XML文件和JSON文件互转
cmd控制台安装第三方模块: pip install xmltodict 1、XML文件转为JSON文件新建一个 <note date="23/04/2022"> <to>tom</to> <from>mary</from> <msg>love</msg></note> 转换代码实现: import jsonimport xmltodictdef xml_to_json(xml_str): """parse是的xml解析器,参数需要 :param xml_str: xml字符串 :return: json字符串 """ xml_parse = xmltodict.parse(xml_str) # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。 # dumps()方法的ident=1,格式化json json_str = json.dumps(xml_parse, indent=1) return json_str XML_PATH = './1.xml' # xml文件的路径with open(XML_PATH, 'r') as f: xmlfile = f.read() with open(XML_PATH[:-3] + 'json', 'w') as newfile: newfile.write(xml_to_json(xmlfile)) 输出结果(生成json文件): 2、JSON文件转换为XML文件新建 { "student": { "course": { "name": "math", "score": "90" }, "info": { "sex": "male", "name": "name" }, "stid": "10213" }} 转换代码实现: import xmltodictimport jsondef json_to_xml(python_dict): """xmltodict库的unparse()json转xml :param python_dict: python的字典对象 :return: xml字符串 """ xml_str = xmltodict.unparse(python_dict) return xml_str JSON_PATH = './test.json' # json文件的路径with open(JSON_PATH, 'r') as f: jsonfile = f.read() python_dict = json.loads(jsonfile) # 将json字符串转换为python字典对象 with open(JSON_PATH[:-4] + 'xml', 'w') as newfile: newfile.write(json_to_xml(python_dict)) 输出结果(生成xml文件): |
以上がPythonのjson標準ライブラリの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。