Object converteren naar Json Javascript

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Een cirkelvormige structuur is een object dat naar zichzelf verwijst. In het volgende voorbeeld wordt naar het object (obj) verwezen als de waarde van de locatiesleutel.

Net als XML wordt JSON (JavaScript Object Notation) gebruikt voor gegevensopslag en -uitwisseling. JSON is veel gemakkelijker te ontleden of te splitsen dan XML en wordt bij voorkeur gebruikt bij het converteren van objecten naar strings met de methode JSON.stringify ().

Fout bij het converteren van circulaire structuren naar JSON

h2>

JSON ondersteunt geen objectverwijzingen, dus pogingen om een JSON-object te koppelen dat naar zichzelf verwijst, resulteert in een typfout. Dit is een fout die kan worden gegenereerd wanneer u een waarde probeert te wijzigen die niet kan worden gewijzigd of wanneer u een waarde ongepast gebruikt.

Screenshot 402

Mogelijke oplossingen

JSON.chaaîne ify () converteert niet alleen de acceptabele producten van ketens, het bevat ook een vervangende parameter die de waarden kan vervangen als de verzonden functie is gespecificeerd om dit te doen. analyseer de onderstaande code om te begrijpen hoe dit gebeurt.

In onze replaceFunc hierboven, we roep WeakSet aan, dit is een object dat losse objecten of objectreferenties opslaat. Elk object van een WeakSet kan maar één keer voorkomen, waardoor herhaalde of circula- r gegevens. Het nieuwe sleutelwoord is een operator die een leeg object maakt.

In ons return-statement hebben we de if-statements genest. Onze eerste if-instructie gebruikt de typeof-operator die het type primitief retourneert (Undefined, Null, Boolean, Number, String, Function, BigInt, Symbol) om te evalueren.

Als ons waardetype strikt gelijk is aan een object en de waarde van dat object niet nul is, gaat het verder op de tweede if-statement, controleren of de waarde in de WeakSet () staat.

Wanneer we een beroep doen op JSON.stringify (), we gaan naar zowel onze oorspronkelijke cirkelstructuur als onze vervangingsfunctie.

Dit geeft ons het gewenste tekenreeksresultaat in de console.

; "{" name ":" John "," age ": 23," gender ":" Man "}"

Andere mogelijke oplossingen voor deze fout zijn het gebruik van bibliotheken zoals as circular-json , wat een circulaire JSON-parser is, of cycle.js , gemaakt voor IE8-gebruikers.

Circulaire JSON serialiseert en deserialiseert anderszins geldige JSON-objecten die kringverwijzingen bevatten van en naar een gespecialiseerd JSON-formaat.

Conclusie

JSON ondersteunt geen objectreferenties, dus als u een JSON-object probeert te koppelen dat naar zichzelf verwijst, zal er een typfout optreden.

Een cirkelvormige structuur is een object dat naar zichzelf verwijst. Om dergelijke objecten te kunnen koppelen, ontwikkelaars kunnen de parameter Replace gebruiken in de methode stringify () en ervoor zorgen dat de doorgegeven functie herhaalde of circulaire gegevens uitfiltert.

Usin g-bibliotheken zoals circular-json kunnen ook een oplossing zijn voor deze fout.