JSON-file

Hello everybody

could someone please help me to generate a JSON-File like the one at the end.

Best wishes from Germany
Ulrich Trutter

{“KlassenListe”:[ {
“Kl_ID”: 1,
“Klasse”: “4b”,
“Klassenlehrer”: “Herr Maier”,
“Schueler”: [
{
“Schueler_Id”: 1,
“Zuname”: “Bauer”,
“Vorname”: “Christine”,
“Sex”: “w”
},
{
“Schueler_Id”: 2,
“Zuname”: “Lang”,
“Vorname”: “Katrin”,
“Sex”: “w”
},
{
“Schueler_Id”: 3,
“Zuname”: “Fischer”,
“Vorname”: “Arne”,
“Sex”: “m”
},
{
“Schueler_Id”: 4,
“Zuname”: “Hoffmann”,
“Vorname”: “Claudia”,
“Sex”: “w”
}
]
},
{
“Kl_ID”: 2,
“Klasse”: “1a”,
“Klassenlehrer”: “Frau Walter”,
“Schueler”: [
{
“Schueler_Id”: 5,
“Zuname”: “Wack”,
“Vorname”: “Christian”,
“Sex”: “m”
},
{
“Schueler_Id”: 6,
“Zuname”: “Wack”,
“Vorname”: “Karl”,
“Sex”: “m”
},
{
“Schueler_Id”: 7,
“Zuname”: “Hasser”,
“Vorname”: “Patrick”,
“Sex”: “m”
},
{
“Schueler_Id”: 8,
“Zuname”: “Bott”,
“Vorname”: “Sebastian”,
“Sex”: “m”
}
]
}
]
}

There is a class available for free at Xojodevspot.com that converts json to and from a dictionary :slight_smile: that may be the easiest route.

http://www.xojodevspot.com/download.php?view.10

Or use the built-in class:

http://documentation.xojo.com/index.php/JSONItem

And then a TextOutputStream to write it to disk:

dim f as FolderItem = GetSaveFolderItem() dim tos as TextOutputStream = TextOutputStream.Create(f) tos.write jsonstring tos.close

Thanks for your replies.
I worked with the JSONItem-sample, but without success.
The Problem is, as you can see from the sample-json, that I need two arrays; one Array contains another one.

In my example the first Array is KlassenListe and the second Schueler.

Any help is welcome.

Hello,

the following code
dim f as FolderItem = GetSaveFolderItem(FileTypes1.Text, “KlassenListe.txt”)
dim tos as TextOutputStream = TextOutputStream.Create(f)

dim jItem as JSONItem

dim klassenliste as new JSONItem
dim klasse as JSONItem
dim schueler as JSONItem
dim person as JSONItem

// 1. Klasse
schueler = new JSONItem
klasse = new JSONItem
klasse.value(“KI_ID”) = 1
klasse.Value(“Klasse”) = “4b”
klasse.Value(“Klassenlehrer”) = “Herr Maier”

person = new JSONItem
person.Value(“Schueler_ID”) = 1
person.Value(“Zuname”) = “Bauer”
person.Value(“Vorname”) = “Christine”
schueler.Append(person)

person = new JSONItem
person.Value(“Schueler_ID”) = 2
person.Value(“Zuname”) = “Lan”
person.Value(“Vorname”) = “Katrin”
schueler.Append(person)

klasse.Value(“Schueler”) = schueler
klassenliste.Append(klasse)

// 2. Klasse
schueler = new JSONItem
klasse = new JSONItem
klasse.value(“KI_ID”) = 2
klasse.Value(“Klasse”) = “4c”
klasse.Value(“Klassenlehrer”) = “Frau Munich”

person = new JSONItem
person.Value(“Schueler_ID”) = 5
person.Value(“Zuname”) = “Hecker”
person.Value(“Vorname”) = “Anton”
schueler.Append(person)

person = new JSONItem
person.Value(“Schueler_ID”) = 6
person.Value(“Zuname”) = “Schmitter”
person.Value(“Vorname”) = “Thomas”
schueler.Append(person)

klasse.Value(“Schueler”) = schueler
klassenliste.Append(klasse)

tos.write klassenliste.ToString
tos.close

Has this result. It shows the trick.

[{“KI_ID”:1,“Klasse”:“4b”,“Klassenlehrer”:“Herr Maier”,“Schueler”:[{“Schueler_ID”:1,“Zuname”:“Bauer”,“Vorname”:“Christine”},{“Schueler_ID”:2,“Zuname”:“Lan”,“Vorname”:“Katrin”}]},{“KI_ID”:2,“Klasse”:“4c”,“Klassenlehrer”:“Frau Munich”,“Schueler”:[{“Schueler_ID”:5,“Zuname”:“Hecker”,“Vorname”:“Anton”},{“Schueler_ID”:6,“Zuname”:“Schmitter”,“Vorname”:“Thomas”}]}]

Hello Torsten,

thanks a lot for your answer.
It does the trick and I again have learned something.