PHP JSON != SpiderBasic JSON?

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
dige
Beiträge: 1179
Registriert: 08.09.2004 08:53

Re: PHP JSON != SpiderBasic JSON?

Beitrag von dige »

@Kurzer: wenn es Groß/Kleinschreibung nicht ankommt, dass Flag #PB_JSON_NoCase verwenden:
https://www.purebasic.com/documentation ... ejson.html
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: PHP JSON != SpiderBasic JSON?

Beitrag 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.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PHP JSON != SpiderBasic JSON?

Beitrag 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
Hygge
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: PHP JSON != SpiderBasic JSON?

Beitrag 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. :D
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Antworten