Ringkasan Python perpustakaan standard json

WBOY
Lepaskan: 2022-04-26 21:12:53
ke hadapan
2877 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang python, yang terutamanya memperkenalkan isu berkaitan tentang perpustakaan standard json, termasuk gambaran keseluruhan asas JSON, modul json, fail XML dan interaksi fail JSON Mari kita lihat kandungan yang dipindahkan di bawah saya harap ia akan membantu semua orang.

"Ringkasan

Pembelajaran yang disyorkan: tutorial video python

Ikhtisar asas JSON

1. Apakah itu JSON?

JSON (nama penuh: JavaSskrip Objek Nperwakilan objek otation) ialah format ringan teks data pertukaran Format data JSON sebenarnya ialah format kamus dalam python, yang boleh Mengandungi tatasusunan yang disertakan dalam kurungan segi empat sama, iaitu senarai dalam Python.

  • JSONBebas bahasa
  • JSON adalah deskriptif diri dan lebih mudah difahami
  • JSON lebih berkuasa daripada XMLKecil, cepat dan mudah dihuraikan
  • Perangkak sering mendapatkan data antara muka, yang dalam format JSON

2. Apakah rupa JSON?

Format sintaks: {key1:value1, key2:value2,} bentuk pasangan nilai kunci (dipisahkan dengan titik bertindih), disambungkan dengan koma

Huruf mudah: Objek JSON

{
    "name": "小明", 
    "age": 18}
Salin selepas log masuk

Kes kompleks: Tatasusunan JSON

{
    "student":
        [
            {"name": "小明", "age": 11},
            {"name": "小红","age": 10}
        ],
    "classroom": {"class1": "room1", "class2": "room2"}}
Salin selepas log masuk

3 Nota

1 pasangan nilai kunci JSON Kunci bahagian mesti dibalut dengan petikan berganda ", petikan tunggal tidak akan berfungsi (jadi jika kata kunci muncul dalam kunci, ia juga akan dicirikan), dan tiada keperluan wajib untuk objek dalam js (jadi ia tidak diperlukan dalam kata kunci Kata kunci dibenarkan).

2. Dalam bahagian nilai pasangan nilai kunci json, fungsi, tidak ditentukan dan NaN tidak dibenarkan muncul, tetapi null boleh muncul, yang boleh muncul dalam nilai objek dalam js.

3. Selepas data json tamat, tidak membenarkan koma tidak bermakna , seperti: {"name":"admin","age":18,} Perhatikan koma selepas 18 pada akhir data dibenarkan muncul.

4. Ringkasan format json

Format json yang betul adalah seperti berikut:

# 格式1:JSON 对象{"name": "admin", "age": 18}# 格式2:JSON 数组{
    "student":
        [
            {"name": "小明", "age": 18},
            {"name": "小红", "age": 16},
            {"name": "小黑", "age": 20}
        ]}
Salin selepas log masuk

Format json yang salah adalah seperti berikut:

"Ringkasan

2 modul json

1 >1. Gunakan jsON String menjana objek python (beban)

2 Format objek python ke dalam rentetan ison (buang)

2 🎜 >Format, akan terdapat perubahan dalam jenis data, seperti yang ditunjukkan dalam jadual berikut:

Seterusnya, tukar format json kepada jenis terbina dalam python, seperti yang ditunjukkan dalam jadual berikut:

Python转换到json3 Cara menggunakan

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null
Penggunaan modul json sebenarnya sangat mudah untuk kebanyakan situasi, kita hanya perlu menggunakan empat kaedah berikut:

4、 json.dumps()

将python数据类型转换为json格式的字符串。

语法格式json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

>>> 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>>> jsonStr = json.dumps(person) 
>>> print(jsonStr )
{"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
>>> type(jsonStr)
<class></class></class>
Salin selepas log masuk

从上可以看出json格式和Python格式的区别在于python格式打印输出是单引号,类型为dict而json格式打印输出是双引号,类型为:strTrue开头大小写区别。

使用参数能让JSON字串格式化输出:

>>> print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))){
    "age": 30,
    "isonly": true,
    "name": "\u5c0f\u660e",
    "tel": [
        "888888",
        "1351111111"
    ]}
Salin selepas log masuk

参数解读

  • sort_keys:是否排序
  • indent:定义缩进距离
  • separators:是一个元组,定义分隔符的类型
  • skipkeys:是否允许JSON字串编码字典对象时,字典的key不是字符串类型(默认是不允许)

修改分割符类型

>>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-'))){
    "age"-30!    "isonly"-true!    "name"-"\u5c0f\u660e"!    "tel"-[
        "888888"!        "1351111111"
    ]
Salin selepas log masuk

文件操作

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串
Salin selepas log masuk

查看生成的新文件:
"Ringkasan

5、json.dump()

将python数据类型转换并保存到son格式的文件内。

语法格式json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}json.dump(person, open('data.json', 'w'))
Salin selepas log masuk

查看生成的新文件:
"Ringkasan
使用参数能让JSON字串格式化输出:

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))
Salin selepas log masuk

再次查看文件:
"Ringkasan
json.dumpsjson.dump写入文件的区别

  • dump() 不需要使用.write()方法,只需要写那个字典,那个文件即可;而 dumps() 需要使用.write()方法写入。
  • 如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库何excel,则需要使用dumps()先把字典转换成字符串,再写入

6、json.loads()

将json格式的字符串转换为python的类型。

语法格式json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

>>> 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>>> jsonStr = json.dumps(person) >>> print(jsonStr ){"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}>>> type(jsonStr)<class># json字符串再转换为Python字典>>> python_obj = json.loads(jsonStr)>>> print(python_obj){'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}>>> print(type(python_obj))<class># 打印字典的所有key>>> print(python_obj.keys())  dict_keys(['name', 'age', 'tel', 'isonly'])

 # 打印字典的所有values>>> print(python_obj.values()) dict_values(['小明', 30, ['888888', '1351111111'], True])</class></class></class>
Salin selepas log masuk

文件操作:

import json

f = open('data.json', encoding='utf-8')content = f.read()  
# 使用loads()方法需要先读文件
python_obj = json.loads(content)print(python_obj)
Salin selepas log masuk

输出结果:
"Ringkasan

7、json.load()

从json格式的文件中读取数据并转换为python的类型。

语法格式json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

文件操作

import json

python_obj = json.load(open('data.json','r'))print(python_obj)print(type(python_obj))
Salin selepas log masuk

输出结果:
"Ringkasan

json.load() json.loads() 区别:

  • loads() 传的是json字符串,而 load() 传的是文件对象

  • 使用 loads() 时需要先读取文件在使用,而 load() 则不用

8、总结

不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的

三、XML文件和JSON文件互转

记录工作中常用的一个小技巧

cmd控制台安装第三方模块

pip install xmltodict
Salin selepas log masuk

1、XML文件转为JSON文件

新建一个1.xml文件:

<note>
	<to>tom</to>
	<from>mary</from>
	<msg>love</msg></note>
Salin selepas log masuk

"Ringkasan

转换代码实现

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))
Salin selepas log masuk

输出结果(生成json文件):
"Ringkasan

2、JSON文件转换为XML文件

新建test.json文件:

{
  "student": {
    "course": {
      "name": "math",
      "score": "90"
    },
    "info": {
      "sex": "male",
      "name": "name"
    },
    "stid": "10213"
  }}
Salin selepas log masuk

"Ringkasan

转换代码实现:

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))
Salin selepas log masuk

输出结果(生成xml文件):
"Ringkasan

推荐学习:python视频教程

Atas ialah kandungan terperinci Ringkasan Python perpustakaan standard json. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan