Verständnis von `json.dumps()` in Python
Grace Collins
Solutions Engineer · Leapcell

Key Takeaways
json.dumps()
konvertiert Python-Objekte in JSON-formatierte Zeichenketten.- Sie können die Ausgabe mit Parametern wie
indent
,sort_keys
undensure_ascii
anpassen. - Nicht-serialisierbare Objekte erfordern eine benutzerdefinierte
default
-Funktion zur Konvertierung.
Die Arbeit mit JSON-Daten (JavaScript Object Notation) ist eine häufige Aufgabe in der Python-Entwicklung, insbesondere in der Webentwicklung, beim Datenaustausch und bei APIs. Das in Python integrierte json
-Modul bietet verschiedene Methoden zur Verarbeitung von JSON-Daten. Eine der am häufigsten verwendeten Funktionen ist json.dumps()
. Dieser Artikel erklärt, was json.dumps()
macht, wie man es verwendet und welche nützlichen Parameter es gibt, die bei der Anpassung der Ausgabe helfen können.
Was ist json.dumps()
?
Die Funktion json.dumps()
in Python wird verwendet, um ein Python-Objekt in eine JSON-formatierte Zeichenkette zu konvertieren. Das "s" in dumps
steht für "dump string" (Zeichenkette ausgeben). Im Gegensatz zu json.dump()
, das JSON-Daten direkt in eine Datei schreibt, gibt dumps()
die JSON-Daten als Zeichenkette zurück. Das ist nützlich, wenn Sie JSON-Daten speichern oder übertragen müssen.
Grundlegende Verwendung
Hier ist ein einfaches Beispiel für die Verwendung von json.dumps()
:
import json data = { "name": "Alice", "age": 30, "is_student": False } json_string = json.dumps(data) print(json_string)
Ausgabe:
{"name": "Alice", "age": 30, "is_student": false}
Beachten Sie, dass das Python False
in JSONs false
konvertiert wird und Schlüssel in doppelte Anführungszeichen eingeschlossen sind.
Häufige Parameter
json.dumps()
akzeptiert verschiedene optionale Parameter, mit denen Sie die Ausgabe anpassen können:
1. indent
Fügt eine Einrückung hinzu, um die JSON-Zeichenkette lesbarer zu machen:
json_string = json.dumps(data, indent=4) print(json_string)
Ausgabe:
{ "name": "Alice", "age": 30, "is_student": false }
2. sort_keys
Sortiert die Schlüssel alphabetisch in der Ausgabe:
json_string = json.dumps(data, sort_keys=True) print(json_string)
Ausgabe:
{"age": 30, "is_student": false, "name": "Alice"}
3. separators
Steuert Element- und Schlüssel-Wert-Trennzeichen. Der Standardwert ist (", ", ": ")
, aber Sie können ihn kompakter gestalten:
json_string = json.dumps(data, separators=(",", ":")) print(json_string)
Ausgabe:
{"name":"Alice","age":30,"is_student":false}
4. ensure_ascii
Standardmäßig werden alle Nicht-ASCII-Zeichen maskiert. Um die Ausgabe von Unicode-Zeichen zu ermöglichen:
data = {"name": "Alice"} json_string = json.dumps(data, ensure_ascii=False) print(json_string)
Ausgabe:
{"name": "Alice"}
Umgang mit nicht-serialisierbaren Objekten
Einige Python-Objekte (wie Mengen, benutzerdefinierte Klassen, Datums- und Zeitobjekte) sind standardmäßig nicht serialisierbar. Sie können sie mit dem Parameter default
behandeln:
from datetime import datetime def serialize_obj(obj): if isinstance(obj, datetime): return obj.isoformat() raise TypeError("Type not serializable") data = {"created": datetime.now()} json_string = json.dumps(data, default=serialize_obj) print(json_string)
Fazit
Die Funktion json.dumps()
ist ein leistungsstarkes Tool in Python, um komplexe Datenstrukturen in JSON-formatierte Zeichenketten zu konvertieren. Egal, ob Sie Daten protokollieren, speichern oder über Netzwerke versenden, das Verständnis der Anpassung von json.dumps()
gibt Ihnen Flexibilität und Kontrolle über Ihre Datendarstellung.
FAQs
json.dump()
schreibt in eine Datei; json.dumps()
gibt eine JSON-Zeichenkette zurück.
Verwenden Sie den Parameter indent
, um die JSON-Zeichenkette mit Zeilenumbrüchen und Leerzeichen zu formatieren.
Nicht standardmäßig. Verwenden Sie den Parameter default
, um festzulegen, wie solche Objekte serialisiert werden sollen.
Wir sind Leapcell, Ihre beste Wahl für das Hosten von Backend-Projekten.
Leapcell ist die Serverless-Plattform der nächsten Generation für Webhosting, Async-Aufgaben und Redis:
Multi-Language Support
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt viele Projekte kostenlos bereit
- Zahlen Sie nur für die Nutzung - keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatisierte CI/CD-Pipelines und GitOps-Integration.
- Echtzeit-Metriken und -Protokollierung für umsetzbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Auto-Skalierung zur einfachen Bewältigung hoher Parallelität.
- Null Betriebsaufwand - konzentrieren Sie sich einfach auf das Bauen.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ