Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Zusammenfassung der JSON-Standardbibliothek

Python-Zusammenfassung der JSON-Standardbibliothek

WBOY
WBOYnach vorne
2022-04-26 17:58:412860Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Python und stellt hauptsächlich verwandte Themen zur JSON-Standardbibliothek vor, einschließlich einer grundlegenden Übersicht über JSON, JSON-Module, XML-Dateien und die gegenseitige Konvertierung von JSON-Dateien usw. Das Folgende ist Werfen wir einen Blick darauf , hoffe es hilft allen.

"Python-Zusammenfassung

Empfohlenes Lernen: Python-Video-Tutorial

1. Überblick über die JSON-Grundlagen

1.

JSON (vollständiger Name: JavaSscript Object Notation Object Notation) ist ein leichtes Text-Daten-Austauschformat, JSON. Das Datenformat ist eigentlich das Wörterbuchformat in Python, das in eckigen Klammern eingeschlossene Arrays enthalten kann, bei denen es sich in Python um Listen handelt. „JSON ist sprachunabhängig.“ s bekommen oft Schnittstellen Daten und Schnittstellendaten liegen im JSON-Format vor

  • 2 Wie sieht JSON aus?
  • Grammatikformat
  • : {key1:value1, key2:value2, Schlüssel-Wert-Paarformat (durch Doppelpunkt getrennt), verbunden mit Kommas zwischen Paaren
  • Einfacher Fall
  • : JSON-Objekt
    {
        "name": "小明", 
        "age": 18}
    Komplexer Fall: JSON-Array
    {
        "student":
            [
                {"name": "小明", "age": 11},
                {"name": "小红","age": 10}
            ],
        "classroom": {"class1": "room1", "class2": "room2"}}
    3. Hinweise
  • 1. Der key-Teil des JSON-Schlüssel-Wert-Paares muss in doppelte Anführungszeichen gesetzt werden ", einfache Anführungszeichen nicht funktionieren (also wenn ein Schlüsselwort im Schlüssel erscheint, wird es auch charakterisiert), aber es gibt keine zwingende Anforderung für Objekte in js (daher sind Schlüsselwörter im Schlüssel nicht erlaubt)
2 Der

Wert

-Teil des json Schlüssel-Wert-Paar, Funktion, undefiniert und NaN sind nicht zulässig, aber im Wert des Objekts in js

3 können bedeutungslose Kommas nicht zulässig sein >{" name="admin","age":18,, achten Sie auf das Komma nach 18 am Ende der Daten, es ist nicht zulässig {key1:value1, key2:value2,} 键值对形式(用冒号分开),对间用逗号连接

简单案例:JSON 对象

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

复杂案例:JSON 数组

>>> 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>

3、注意事项

1、json的键值对的部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。

2、json的键值对的部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。

3、json数据结束后,不允许出现没有意义的逗号,如:{"name":"admin","age":18,},注意看数据结尾部分18的后面的逗号,不允许出现。

4、json格式总结

正确的json格式如下

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

错误的json格式如下

"Python-Zusammenfassung

二、json 模块

1、作用

1、使用jsON字符串生成python对象(load)

2、由python对象格式化成为ison字符串(dump)

2、数据类型转换

将数据从Python转换到json格式,在数据类型上会有变化,如下表所示:

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

反过来,将json格式转化为python内置类型,如下表所示:

JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None

3、使用方法

json模块的使用其实很简单,对于绝大多数场合下,我们只需要使用下面四个方法就可以了:

4 Das richtige JSON-Format lautet wie folgt:
>>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-'))){
    "age"-30!    "isonly"-true!    "name"-"\u5c0f\u660e"!    "tel"-[
        "888888"!        "1351111111"
    ]
方法 功能
json.dumps(obj) 将python数据类型转换为json格式的字符串。
json.dump(obj, fp) 将python数据类型转换并保存到son格式的文件内。
json.loads(s) 将json格式的字符串转换为python的类型。
json.load(fp)
🎜Das falsche JSON-Format lautet wie folgt:🎜🎜" 🎜🎜🎜 2. JSON-Modul 🎜🎜🎜🎜1. Funktion 🎜🎜🎜1. Verwenden Sie JSON-String, um das Python-Objekt (Last) 🎜🎜2 zu generieren. Formatieren Sie das Python-Objekt in einen ISON-String (Dump)🎜🎜2. Konvertieren Sie Daten vom Python-Format. Es wird Änderungen im Datentyp geben, wie in der folgenden Tabelle gezeigt: 🎜 Python JSON🎜 🎜dict🎜🎜object🎜🎜 🎜list, tuple🎜🎜array🎜🎜 🎜str🎜🎜string🎜🎜 🎜int, float, int- & float-derived Enums🎜🎜number🎜🎜 🎜True🎜🎜true🎜🎜🎜False🎜🎜false🎜🎜 🎜None🎜🎜null🎜🎜🎜🎜🎜Konvertieren Sie wiederum das JSON-Format in in Python integrierte Typen, wie in der folgenden Tabelle gezeigt: 🎜🎜🎜object🎜🎜dict🎜🎜🎜array🎜🎜list 🎜🎜🎜string🎜🎜str🎜🎜🎜number(int)🎜🎜int🎜🎜🎜number(real)🎜🎜float🎜🎜🎜true🎜🎜True🎜🎜🎜false🎜🎜False🎜🎜🎜null 🎜🎜None🎜🎜🎜🎜🎜 3. Verwendung 🎜🎜Die Verwendung des JSON-Moduls ist eigentlich sehr einfach. In den meisten Situationen müssen wir nur Folgendes verwenden vier Methoden: 🎜
JSON Python
🎜🎜json .dumps(obj)🎜🎜konvertiert den Python-Datentyp in eine JSON-Formatzeichenfolge. 🎜🎜🎜json.dump(obj, fp)🎜🎜Konvertieren Sie den Python-Datentyp und speichern Sie ihn in einer Datei im Son-Format. 🎜🎜🎜json.loads(s)🎜🎜Konvertieren Sie die JSON-Formatzeichenfolge in den Python-Typ. 🎜🎜🎜json.load(fp)🎜🎜Lesen Sie Daten aus einer Datei im JSON-Format und konvertieren Sie sie in den Python-Typ. 🎜🎜🎜🎜

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>

从上可以看出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"
    ]}

参数解读

  • 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"
    ]

文件操作

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串

查看生成的新文件:
"Python-Zusammenfassung

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'))

查看生成的新文件:
"Python-Zusammenfassung
使用参数能让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=(',', ': '))

再次查看文件:
"Python-Zusammenfassung
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>

文件操作:

import json

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

输出结果:
"Python-Zusammenfassung

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))

输出结果:
"Python-Zusammenfassung

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

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

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

8、总结

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

三、XML文件和JSON文件互转

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

cmd控制台安装第三方模块

pip install xmltodict

1、XML文件转为JSON文件

新建一个1.xml文件:

<note>
	<to>tom</to>
	<from>mary</from>
	<msg>love</msg></note>

"Python-Zusammenfassung

转换代码实现

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文件):
"Python-Zusammenfassung

2、JSON文件转换为XML文件

新建test.json文件:

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

"Python-Zusammenfassung

转换代码实现:

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-Zusammenfassung

推荐学习:python视频教程

Method Function

Das obige ist der detaillierte Inhalt vonPython-Zusammenfassung der JSON-Standardbibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen