JSON lesen

Hey :slight_smile:

eventuell kann mir jemand mal unter die Arme greifen, ich stehe grundstzlich immer auf Kriegsfu mit JSON :frowning:

Folgendes JSON wrde ich gerne in eine TextArea werfen:

{
  "success": {
    "message": "Success! Here are your links.", 
    "links": [
      "Some Text here", 
      "http://www.link.url", 
      "http://www.link.url"
    ]
  }
}

Im Endeffekt interessieren mich aber nur die Links die hier ausgelesen wurden, kann ich mit XOJO den JSON Kram drum herum irgendwiie los werden? Hat da jemand Beispiele :slight_smile:

Die JSONItem Klasse hast du gesehen?

code in etwa so:

[code] dim j as new JSONItem(TextArea1.Text)

dim sucessItem as JSONItem = j.Value(“success”)
dim linksArray as JSONItem = sucessItem.Value(“links”)

dim u as integer = linksArray.Count-1
for i as integer = 0 to u
MsgBox linksArray.Value(i)
next[/code]

bei mir ist das JSON oben in einem Textarea.

Danke das hat mir geholfen, allerdings macht JSON irgendwie immerr noch Probleme, ich versteh irgendwie nie wie man diese Felder adressiert, hier geht es nun aber wenn das JSON wieder ein wenig anders aussieht…steh ich wieder an :frowning:

Hast Du das Handbuch bereits studiert? Siehe:
https://documentation.xojo.com/index.php/JSONItem

Zudem gibt es in Xojo ein Beispielprojekt. Ich habe mich für JSON entschieden weil es sich mir schneller erschloss als die XML Alternative.

Wann immer ich jetzt Daten strukturiert speichern oder versenden möchte, da ist JSON mein Freund :slight_smile:

Ja das habe ich auch offen, trotzdem komme ich gerade nicht so recht klar.

{
    "data": {
        "sid": "fbIdlWr7jhL321420LRN000595"
    },
    "success": true
}

Das JSON sieht momentan so aus… zum prüfen ob der Login geht, bin ich so vorgegangen:

Dim jResult as new JSONItem(result)  
Dim v As Variant
v = jResult.Lookup("success", "not found")

Das klappt auch, so komme ich an das success Feld, aber an die SID komme ich nicht, Lookup findet dieses nicht. Dann habe ich es noch so probiert:

Dim jResult as new JSONItem(result)
dim DataItem as JSONItem = jResult.Value("data")
dim SiDItem as JSONItem = DataItem.Value("sid")

Mag er aber auch nicht … das lookup sollte doch aber eigentlich alles in so einem JSON finden oder?

was mag er nicht? Fehlermeldung?
Der wert vom Key “sid” ist vermutlich ein String, kein JSONItem.

IllegalCastException wirft er aus, ok ich dachte alles in einem JSON ist ein JSONItem.

nein, nimm einen variant oder string da.

Also JSON ist echt nett umgesetzt in Xojo :slight_smile: hab mir jetzt ne kleine Library geschrieben mit der ich meine Programm-Settings in eine Config-File auslagern kann :slight_smile: