Seite 2 von 2
Re: PHP JSON != SpiderBasic JSON?
Verfasst: 02.08.2020 13:07
von dige
@Kurzer: wenn es Groß/Kleinschreibung nicht ankommt, dass Flag #PB_JSON_NoCase verwenden:
https://www.purebasic.com/documentation ... ejson.html
Re: PHP JSON != SpiderBasic JSON?
Verfasst: 02.08.2020 15:23
von Kurzer
Danke für den Hinweis, didge.
Prinzipiell habe ich kein Problem damit, dass die Strukturfelder so heißen müssen wie die Feldbezeichner im JSON. Ich finde es nur unerwartet und es steht leider auch nicht in der Hilfe beschrieben.
Generell dachte ich, dass die JSON-Elemente in eine "egal wie benannte" Struktur extrahiert werden können und es dabei nur darauf ankommt, dass die Strukturelemente den zur JSON Struktur passenden Datentypen haben. Letztendlich ist eine Struktur ja nur ein Stück Speicher der über (im Quellcode) benannte Offset angesprochen wird. Dass der Name der Strukttufelder zur Laufzeit überhaupt noch relevant ist, habe ich nicht erwartet. Ich dachte der Compiler macht da intern eine anonyme Offset-Tabelle draus.
In PureBasic läuft es mit ExtractJSONxyz() übrigens genau so wie in SpiderBasic, was ich noch weniger erwarten würde. Dort gibt's ja keine Javascript-Konventionen, die der PB Compiler evtl. beachten müsste. Und auch dort ist kein Hinweis in der Hilfe zu finden, dass die Feldnamen der PB Struktur mit den Feldbezeichnungen im JSON übereinstimmen müssen.
https://www.purebasic.com/documentation ... nlist.html
Wenn Du das Beispiel aus der Hilfe nimmst und die Felder x und y in der Strukturdefinition (und in der Debugzeile) änderst, dann funktioniert es nicht mehr.
Re: PHP JSON != SpiderBasic JSON?
Verfasst: 02.08.2020 15:57
von Kiffi
nunja, irgendwo muss ja eine Zuweisung JSON -> Struktur erfolgen. Da die Reihenfolge der JSON-Objekte innerhalb eines Knotens beliebig sein kann und JSON case-sensitive ist, kann die Zuweisung nur über case-sensitive Benennung in der Struktur erfolgen.
Grüße ... Peter
Re: PHP JSON != SpiderBasic JSON?
Verfasst: 02.08.2020 15:59
von Kurzer
User #Null hat's erklärt.
https://www.purebasic.fr/english/viewto ... 13&t=75795
JSON beachtet die Reihenfolge der Elemente unter Umständen nicht. Somit können sich PB und SB nicht auf die Reihenfolge der im JSON-String enthaltenen Elemente verlassen. Eine korrekte Zuordnung zur einer Struktur ist daher nur möglich, wenn man das über den Namen der Strukturfelder abgleichen kann. Macht Sinn.
EDIT: Kiffi war schneller.
