API JsonStringify de - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

JsonStringify

ClassicUO • Runtime API

Erzeugt JSON-Text aus Basic-Werten.

Genaue Syntax

JsonStringify(value:Any) -> String
JsonStringify(value:Any, indented:Integer) -> String

Parameter

  • value — Zahl, String, Array, List, Dictionary, JsonBoolean oder JsonNull. Dictionary-Schlüssel müssen Strings sein. Gemeinsame Referenzen sind erlaubt, Zyklen nicht.
  • indented — Integer-Schalter:0 kompakt, ungleich0 eingerückt. Standard:Stringify=0, Save=1.

Rückgabewert

String mit JSON; erstellt keine Datei.

Verhalten

  • Lokale Basic-Funktionen ohne UO. und ohne Spielpakete. JsonParse/JsonStringify arbeiten im Speicher. Basic True wird als Zahl1 geschrieben; für JSON true JsonBoolean(True) verwenden. JsonNull() trennt null von0.
  • Nur endliche Zahlen. Ganzzahlige Werte außerhalb ±9007199254740991 werden abgelehnt; große IDs als Strings speichern. Sonst gilt Double-Genauigkeit. Striktes UTF-8: Eingabe-BOM erlaubt, Ausgabe ohne BOM. Ungültiges Unicode ist ein Fehler.
  • Grenzen:1048576 UTF-16-Codeeinheiten,4MiB Dateiausgabe,64 verschachtelte Container,100000 Wertknoten. Überschreitungen sind Fehler. Lesen erzeugt neue Sammlungen; Speichern klont keine Speicherobjekte.
  • Save prüft alle Daten, erstellt Ordner, schreibt eine temporäre Nachbardatei, leert Puffer und verschiebt/ersetzt sie. Fehler/Abbruch vor Ersetzung erhalten die alte Datei. Temporärdateien werden entfernt, soweit das Betriebssystem es zulässt. Abgeschlossene Ersetzungen werden nicht zurückgenommen.
  • Pause/Stopp werden alle256 Werte, zwischen4096-Byte/Zeichen-Blöcken und vor Ersetzung geprüft. Kein zusätzlicher Thread; OS-Aufrufe sind nicht zwangsweise unterbrechbar. Gleichzeitiges Speichern: letzte erfolgreiche Ersetzung gewinnt; keine Datenbanktransaktion.

Interne Funktionen: vom Aufruf zum Ergebnis

Erzeugt JSON-Text aus Basic-Werten.

1. Stringify

Zahl, String, Array, List, Dictionary, JsonBoolean oder JsonNull. Dictionary-Schlüssel müssen Strings sein. Gemeinsame Referenzen sind erlaubt, Zyklen nicht. Integer-Schalter:0 kompakt, ungleich0 eingerückt. Standard:Stringify=0, Save=1.

String mit JSON; erstellt keine Datei.

Projektquelle: external/InjectionScript/src/InjectionScript/Runtime/BasicJson.cs; Funktion Stringify.

Config.Load(fileName, defaults) liefert ein neues Dictionary: gespeicherte oberste Schlüssel überschreiben eine tiefe Kopie von defaults. Verschachtelte Objekte werden vollständig ersetzt. Config.Save(fileName, settings) speichert ausdrücklich, ohne Rückgabewert. Config.GetFlag(settings, key, fallback=False) liefert1/True oder0/False; vorhandene nichtlogische Werte verursachen Fehler. Config.SetFlag(settings, key, value) ändert nur den Speicher und liefert nichts. Load/Save benötigen Dictionaries mit String-Schlüsseln. Private RequireObject prüft die äußere Art; JSON prüft den gesamten Inhalt.

Beispiele

JsonStringify · 1

# JsonStringify · 1
#
# Erzeugt JSON-Text aus Basic-Werten.
#
# String mit JSON; erstellt keine Datei.

Option Explicit On
Sub Main()
    # Main ausführen. value=Dictionary(name="ore",count=3), indented=0 → String
    # {"name":"ore","count":3}.

    Dim d=Dictionary()
    d['name']='ore'
    d['count']=3
    Return JsonStringify(d)
End Sub

Erläuterung der Parameter und Ausführung:

  • Main ausführen. value=Dictionary(name="ore",count=3), indented=0 → String {"name":"ore","count":3}.

JsonStringify · 2

# JsonStringify · 2
#
# Erzeugt JSON-Text aus Basic-Werten.
#
# String mit JSON; erstellt keine Datei.

Option Explicit On
Sub Main()
    # Main ausführen. value=d, indented=True=1; JsonParse(text) → independent Dictionary; JsonKind →
    # "boolean:null".

    Dim d=JsonParse('{"enabled":true,"empty":null}')
    Dim text=JsonStringify(value:=d, indented:=True)
    Dim copy=JsonParse(text)
    Return JsonKind(copy['enabled']) & ':' & JsonKind(copy['empty'])
End Sub

Erläuterung der Parameter und Ausführung:

  • Main ausführen. value=d, indented=True=1; JsonParse(text) → independent Dictionary; JsonKind → "boolean:null".

JsonStringify · 3

# JsonStringify · 3
#
# Erzeugt JSON-Text aus Basic-Werten.
#
# String mit JSON; erstellt keine Datei.

Option Explicit On
Sub Main()
    # Main ausführen. value=List → value[0]=value → Catch → "cycle".

    Dim d=List()
    d.Add(d)
    Try
    Dim text=JsonStringify(d)
    Catch problem
    Return 'cycle'
    End Try
    Return 'unexpected'
End Sub

Erläuterung der Parameter und Ausführung:

  • Main ausführen. value=List → value[0]=value → Catch → "cycle".

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic