JSON is een acroniem dat staat voor JavaScript Object Notation. Ondanks zijn naam is JSON een taalonafhankelijk formaat dat het meest wordt gebruikt om gegevens tussen systemen te verzenden en soms ook om gegevens op te slaan. Programma's die in Python zijn geschreven, evenals vele andere programmeertalen, kunnen gegevens in JSON-indeling opnemen en gegevens in het geheugen serialiseren naar het JSON-formaat. Python ondersteunt JSON via een ingebouwd pakket genaamd json. Om deze functie te gebruiken, importeert u het json-pakket in het Python-script of de module waarin u uw gegevens wilt serialiseren of deserialiseren. JSON maakt gebruik van door komma's gescheiden sleutelwaardeparen tussen dubbele aanhalingstekens en gescheiden door dubbele punten. De hoofdtekst van een JSON-bestand kan worden gescheiden door accolades { } of vierkante accolades [] (in sommige landen ook wel haakjes genoemd). Het JSON-formaat lijkt vergelijkbaar met het woordenboek in Python, maar de specifieke kenmerken van het JSON-formaat verschillen aanzienlijk, dus wees voorzichtig als je met beide formaten werkt.
Opmerking: Voor meer informatie, zie Lezen, Schrijf en parseer JSON met Python
Json.dumps()
De functie json.dumps() converteert een subset van Python-objecten naar een json-string. Niet alle objecten zijn converteerbaar en het kan zijn dat u een woordenboek moet maken met gegevens die u wilt vrijgeven voordat u deze naar JSON serialiseert.
Syntaxis:
json.dumps(obj, *, skipkeys=False, sure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Parameters:
obj: Serialiseer obj als een JSON-geformatteerde stream
toetsen overslaan: Als Skipkeys True is (standaard: False), worden dicteertoetsen die niet van het basistype zijn (str, int, float, bool, None) overgeslagen in plaats van dat er een TypeError wordt gegenereerd.
verzekeren_ascii: Als sure_ascii True is (de standaardwaarde), wordt gegarandeerd dat alle binnenkomende niet-ASCII-tekens worden geëscaped. Als sure_ascii False is, worden deze tekens uitgevoerd zoals ze zijn.
check_circular: Als check_circular False is (standaard: True), wordt de kringverwijzingscontrole voor containertypen overgeslagen en resulteert een kringverwijzing in een OverflowError (of erger).
toelaten in: Als allow_nan False is (standaard: True), dan is het een ValueError om float-waarden die buiten het bereik vallen (nan, inf, -inf) te serialiseren in strikte overeenstemming met de JSON-specificatie. Als allow_nan True is, worden hun JavaScript-equivalenten (NaN, Infinity, -Infinity) gebruikt.
inspringen: Als inspringen een niet-negatief geheel getal of een tekenreeks is, worden JSON-array-elementen en objectleden mooi afgedrukt met dat inspringingsniveau. Een inspringniveau van 0, negatief of zal alleen nieuwe regels invoegen. Geen (de standaardinstelling) selecteert de meest compacte representatie. Als u een inspringing met een positief geheel getal gebruikt, worden zoveel spaties per niveau ingesprongen. Als inspringen een tekenreeks is (zoals ), wordt die tekenreeks gebruikt om elk niveau te laten inspringen.
scheidingstekens: Indien opgegeven, moeten scheidingstekens een (item_separator, key_separator) tupel zijn. De standaardwaarde is (‘, ‘, ‘: ‘) als inspringen Geen is en anders (‘, ‘, ‘: ‘). Om de meest compacte JSON-representatie te krijgen, moet u (‘, ‘, ‘:’) opgeven om witruimte te elimineren.
standaard: Indien opgegeven, moet de standaard een functie zijn die wordt aangeroepen voor objecten die anders niet kunnen worden geserialiseerd. Het moet een JSON-codeerbare versie van het object retourneren of een TypeError genereren. Als dit niet is opgegeven, wordt TypeError gegenereerd.
sorteersleutels: Als sort_keys True is (standaard: False), wordt de uitvoer van woordenboeken gesorteerd op sleutel.
Voorbeeld 1: Als u het Python-woordenboek doorgeeft aan de functie json.dumps(), wordt een tekenreeks geretourneerd.
Python3
javapunt java
import> json> # Creating a dictionary> Dictionary>=>{>1>:>'Welcome'>,>2>:>'to'>,> >3>:>'Geeks'>,>4>:>'for'>,> >5>:>'Geeks'>}> > # Converts input dictionary into> # string and stores it in json_string> json_string>=> json.dumps(Dictionary)> print>(>'Equivalent json string of input dictionary:'>,> >json_string)> print>(>' '>)> # Checking type of object> # returned by json.dumps> print>(>type>(json_string))> |
>
>
Uitvoer
Equivalente json-reeks van woordenboek: {1: Welkom, 2: aan, 3: Geeks, 4: voor, 5: Geeks}
Voorbeeld #2: Door de skipkeys in te stellen op True (standaard: False), slaan we automatisch de sleutels over die niet van het basistype zijn.
Python3
import> json> Dictionary>=>{(>1>,>2>,>3>):>'Welcome'>,>2>:>'to'>,> >3>:>'Geeks'>,>4>:>'for'>,> >5>:>'Geeks'>}> # Our dictionary contains tuple> # as key, so it is automatically> # skipped If we have not set> # skipkeys = True then the code> # throws the error> json_string>=> json.dumps(Dictionary,> >skipkeys>=> True>)> print>(>'Equivalent json string of dictionary:'>,> >json_string)> |
>
doen terwijl je in Java bent
>
Uitvoer
Equivalente json-tekenreeks van woordenboek: {2: naar, 3: Geeks, 4: voor, 5: Geeks}
Voorbeeld #3:
Python3
import> json> # We are adding nan values> # (out of range float values)> # in dictionary> Dictionary>=>{(>1>,>2>,>3>):>'Welcome'>,>2>:>'to'>,> >3>:>'Geeks'>,>4>:>'for'>,> >5>:>'Geeks'>,>6>:>float>(>'nan'>)}> # If we hadn't set allow_nan to> # true we would have got> # ValueError: Out of range float> # values are not JSON compliant> json_string>=> json.dumps(Dictionary,> >skipkeys>=> True>,> >allow_nan>=> True>)> print>(>'Equivalent json string of dictionary:'>,> >json_string)> |
>
>
Uitgang:
Equivalente json-tekenreeks van woordenboek: {2: naar, 3: Geeks, 4: voor, 5: Geeks, 6: NaN}
Voorbeeld #4:
Python3
referentiegegevenstypen in Java
import> json> Dictionary>=>{(>1>,>2>,>3>):>'Welcome'>,>2>:>'to'>,> >3>:>'Geeks'>,>4>:>'for'>,> >5>:>'Geeks'>,>6>:>float>(>'nan'>)}> # Indentation can be used> # for pretty-printing> json_string>=> json.dumps(Dictionary,> >skipkeys>=> True>,> >allow_nan>=> True>,> >indent>=> 6>)> print>(>'Equivalent json string of dictionary:'>,> >json_string)> |
java-string join
>
>
Uitgang:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }> Voorbeeld #5:
Python3
import> json> Dictionary>=>{(>1>,>2>,>3>):>'Welcome'>,>2>:>'to'>,> >3>:>'Geeks'>,>4>:>'for'>,> >5>:>'Geeks'>,>6>:>float>(>'nan'>)}> # If specified, separators should be> # an (item_separator, key_separator)tuple> # Items are separated by '.' and key,> # values are separated by '='> json_string>=> json.dumps(Dictionary,> >skipkeys>=> True>,> >allow_nan>=> True>,> >indent>=> 6>,> >separators>=>(>'. '>,>' = '>))> print>(>'Equivalent json string of dictionary:'>,> >json_string)> |
>
>
Uitgang:
csma en csma-cd
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }> Voorbeeld #6:
Python3
import> json> Dictionary>=>{>'c'>:>'Welcome'>,>'b'>:>'to'>,> >'a'>:>'Geeks'>}> json_string>=> json.dumps(Dictionary,> >indent>=> 6>,> >separators>=>(>'. '>,>' = '>),> >sort_keys>=> True>)> print>(>'Equivalent json string of dictionary:'>,> >json_string)> |
>
>
Uitgang:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>