Ich verweise einfach mal auf den thread im englischen für den (aktuellsten) Code.
Wer nicht im englischen Forum ist kann natürlich Fragen und Anregungen hier posten.
Ganz kurz auf deutsch: Als ich im 5.3 changelog von einer json-lib gelesen habe, hab ich mich tierisch gefreut. Aber dieses rumgewurschtel mit Objekt IDs und weiß der Geier alles ist mir ehrlich gesagt zu blöd.
In Javascript geht das ganz einfach (dieser Code ist ein weniger vereinfacht, aber demonstriert wie einfach
es ist)
Code: Alles auswählen
json = {foo:bar};
print(json.foo); //prints "bar"
Code: Alles auswählen
Define json.s = "{foo:bar}"
JSON::eval(json)
Debug JSON::Get("foo") ; will debug: bar
Hier nur ganz kurz der DeclareModule Block und ein kurzes Beispiel (so nicht lauffähig). Der Rest wie gesagt im englischen Forum.
Noch ganz kurz die Info auch auf deutsch: Keine Validierung. Wenn der json string Murks ist, liefert das Modul auch Murks als Ergebnis. Kein Typen Support. Alle Werte sind Strings. Auch Arrays (die noch kräftig überarbeitet werden müssen).
Momentan kann nur ein json String auf einmal gelesen werden, bzw, wenn man einen mit gleichen Schlüsselnamen einliest wird der vorherige z.T. überschrieben.
Die Schlüssel sind case sensitive. Ein entsprechendes Flag werde ich noch einbauen.
Code: Alles auswählen
DeclareModule
Declare eval(input.s) ; Should return 0. If not, there's an error in object depth, e.g. "{key:value,key2:{object}" (closing paranthesis missing)
Declare.s GET(key.s) ; Returns the value for the given key as a string
EndDeclareModule
;...
;-
;-EXAMPLE
Define json.s = "{" ;copied from Wikipedia and edited to add more variety
json + " 'Company': 'Xema',"
json + " 'Number': '1234-5678-9012-3456',"
json + " 'Exponent': 2e+6,"
json + " 'Currency': 'EURO',"
json + " 'Person': {"
json + " 'Name': 'Mustermann',"
json + " 'First Name': 'Max',"
json + " 'male': true,"
json + " 'Hobbys': [ 'Hiking', 'Golf', 'Reading' ],"
json + " 'Age': 42,"
json + " 'Children': [{name:julia},{name:hans}],"
json + " 'Spouse': null"
json + " }"
json + "}":ReplaceString(json, "'", Chr(34), #PB_String_InPlace)
JSON::eval(json)
Debug "Company: "+ JSON::GET("Company")
Debug "Number: "+ JSON::GET("Number")
Debug "Person: "+ JSON::GET("Person") + "<< empty, as it's an object and not a real value"
Debug "Person -> Name: "+ JSON::GET("Person\Name")
Debug "Person -> Hobbys: "+ JSON::GET("Person\Hobbys")
Debug JSON::GET("Person\Children\name") ;this is not a proper key, it should be an array index. This needs to be fixed