Foro | | | | - Page 1 - |
| | Ich habe mitbekommen, dass JSON-Verarbeitung mit aktuellem XProfan direkt possibile sein soll.
Wer möchte, der kann hier eine aktuelle Kopie aller Fonte [...] als JSON-File herunterladen:
Herunterladen
Ich kann es selbst noch nicht testen aber vielleicht hat ja jemand Divertimento damit.
Jeder Datensatz besteht aus (int) id, (int) fpid, (text) title, (text_base64) text.
Lässt sich sowas gut damit verarbeiten?
Wem Spalten fehlen: einfach melden!
Zurücklesen in die Community so auch possibile. |
| 1.719 kB | | Bezeichnung: | quelltexte.json | | Version: | 04.06.2018 | | Kurzbeschreibung: | Fonte als JSON-File | | Hochgeladen: | 04.06.2018 | | Downloadcounter: | | | | Herunterladen |
| | | | |
| | | | | - Page 1 - |
| Jörg Sellmeyer | Cool - sobald mein Rechner wieder corre, werd ich mich damit mal befassen. Mir schwebt ein Programm vor, das dann beliebige json-Objekte z. B. als Treeview anzeigt. Irgendwie bietet sich die Struktur dafür an, finde ich. |
| | | | |
| | RGH | Die etwas verbesserten Translates per die HTML-tags in den Quellcodes (s.o.):
set("RegEx", 1)
text = translate$(text, "& #40;", "(")
text = translate$(text, "& #41;", ")")
text = translate$(text, "& #58;", ":")
text = translate$(text, "ä", "ä")
text = translate$(text, "ö", "ö")
text = translate$(text, "ü", "ü")
text = translate$(text, "ß", "ß")
text = translate$(text, """, "\q")
text = translate$(text, "~[b[ -Z^-z]*~]", "// ")
text = translate$(text, "~[/b[ -Z^-z]*~]", "")
text = translate$(text, "~[code[ -Z^-z]*~]", "")
text = translate$(text, "~[/code[ -Z^-z]*~]", "")
text = translate$(text, "~[color=[ -Z^-z]*~]", "")
text = translate$(text, "~[/color[ -Z^-z]*~]", "")
Saluto Roland |
| | | XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.06.2018 ▲ |
| |
| | Michael W. | iF, wir brauchen ein verbessertes html_entity_decode(), das dann auch alle Sonderfälle wieder entzaubert. Sind die HexCodes eine Klassifizierung? Oder eine weitere ID?
[...b:...0a03fb2d32]WAV-Aufnahme über MCI[.../...b...:...0a03fb2d32] [...code...:...1...:...0a03fb2d32]...[.../...code...:...1...:...0a03fb2d32]
|
| | | | |
| | RGH | Gerade ist mir aufgefallen, dass ich eine wichtige JSON-Funktion in der Aiuto vergessen habe: js = json("Parse", text) Es wird ein Json-Objekt aus dem String text erzeugt. text muss ein gültiges Json-Objekt in Textform sein.
Damit potuto man die obige File mit den Quelltexten auch direkt verwenden:
Die Json-Liste wird in den String text gelesen, in ein Json-Objekt gepackt und mit Parse dann in das Json-Objekt js eingelesen.
Saluto Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.06.2018 ▲ |
| |
| | Michael W. |
wichtige JSON-Funktion in der Aiuto vergessen
Obwohl Json() ja schon ein großer Container ist...
Roland kannst Du dann auch das html_entity_decode() und das Gegenstück html_entities() als Funktionen dazu spendieren? Das geht in Pascal codiert doch etwas flotter.
Beschreibungen sind unter PHP zu finden. |
| | | | |
| | | | - Page 2 - |
| | | Michael W. (09.06.2018)
Sind die HexCodes eine Klassifizierung? Oder eine weitere ID?
Mittlerweile unnötige Überbleibsel aus damaligem PHPBB-System, die restlos entfernt werden könn(t)en. |
| | | | |
| | H.Brill | Vielleicht potuto RGH den Json-Container noch erweitern. Was fehlen würde :
Json("RemoveString",...) Json("ChangeString",...) Json("RemoveObject",...) Json("ChangeObject",...) Json("RemoveList",...) Json("ChangeList",...)
und vlt. noch ein variables Json("Find",....)
Interessant wären ja auch noch Strukturen.
Json("AddStruktur", ...) Json("RemoveStruktur", ...) Json("ChangeStruktur",...) |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 14.03.2023 ▲ |
| |
| | H.Brill | Ciao, ich habe noch eine kleine Merkwürdigkeit beim Hash-Array und Json entdeckt :
Declare Long js, xs, Hash hasharray[]
Declare String Schluessel, Wert
Cls
js = Create("Json")
Json("AddString", js, "Beruf", "Bäcker")
Json("AddString", js, "Beruf", "Metzger")
Json("AddString", js, "Beruf", "Schlosser")
hasharray[] = Json("Hash", js)
ForEach hasharray[], Schluessel, Wert
Print Schluessel, "=", Wert
EndFor
Print
Print
xs = Create("Json")
Json("AddString", xs, "Bäcker", "Beruf")
Json("AddString", xs, "Metzger", "Beruf")
Json("AddString", xs, "Schlosser", "Beruf")
hasharray[] = Json("Hash", xs)
ForEach hasharray[], Schluessel, Wert
Print Wert, "=", Schluessel
EndFor
WaitKey
End
Normalerweise sollten ja keine gleichen Schlüssel bei Json("AddString", js, [name], string) verwendet werden. Funktionieren tut es aber trotzdem. Die Merkwürdigkeit kommt aber dann beim Auslesen mit ForEach...EndFor. Die gleichen Schlüssel werden dennoch aufgelistet, aber die Werte nicht alle. Nur der erste gefundene Wert wird immer wieder übernommen. Damit es dennoch klappt, kann man Schlüssel und Werte einfach tauschen, damit die Schlüssel wieder einmalig sind. Das kann man aber auch nur bei bestimmten Konstellationen machen.
Ob das nun ein Bug ist, oder nicht sei mal dahin gestellt. Ich denke, da besteht noch Handlungsbedarf seitens RGH. Entweder listet ForEach auch alle Werte auf oder aber RGH prüft bei Json("AddString", js, [name], string), ob der Schlüssel schon vorhanden ist und gibt entsprechend eine Fehlermeldung oder auch -1 (wie bei den anderen Funktionen) zurück.
Als Workarround bleibt hier nur, mit Json("Count", js) und in einer Schleife das zu überprüfen. Es sollte hier nur erwähnt werden, da ich selber gerade in diese 'Falle' getappt bin. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 26.03.2023 ▲ |
| |
| | Georg Teles | Ciao,
scheint tatsächlich ein Auslesefehler zu sein, denn die Datensätze werden in die File korrekt abgespeichert:
js.json
{"Beruf":"Bäcker","Beruf":"Metzger","Beruf":"Schlosser"}
xs.json
{"Bäcker":"Beruf","Metzger":"Beruf","Schlosser":"Beruf"}
Quelltext
Declare Long js, xs, Hash hasharray[]
Declare String Schluessel, Wert
Cls
js = Create("Json")
Json("AddString", js, "Beruf", "Bäcker")
Json("AddString", js, "Beruf", "Metzger")
Json("AddString", js, "Beruf", "Schlosser")
hasharray[] = Json("Hash", js)
Declare i&
Clear i&
For i&, Json("COUNT", js)'SizeOf(hasharray[])
print i&-1, Json("NAME", js, i&-1), "=", Json("VALUE", js, i&-1)
EndFor
Json("WRITE", js, "js.json")
Print
Print
xs = Create("Json")
Json("AddString", xs, "Bäcker", "Beruf")
Json("AddString", xs, "Metzger", "Beruf")
Json("AddString", xs, "Schlosser", "Beruf")
hasharray[] = Json("Hash", xs)
ForEach hasharray[], Schluessel, Wert
Print Wert, "=", Schluessel
EndFor
print
print
Clear i&
For i&, Json("COUNT", xs)'SizeOf(hasharray[])
print i&-1, Json("NAME", xs, i&-1), "=", Json("VALUE", xs, i&-1)
EndFor
Json("WRITE", xs, "xs.json")
WaitKey
End
Grüße Georg |
| | | | |
| | H.Brill | Danke per die Bestätigung. Mit "Auslesefehler " hast du es genau getroffen. Mit dem Hash-Array bzw. der ForEach-Schleife hat es allerdings nichts zu tun : Hier mal händisch ausgelesen :
Declare long js, xs
Cls
js = Create("Json")
Json("AddString", js, "Beruf", "Bäcker")
Json("AddString", js, "Beruf", "Metzger")
Json("AddString", js, "Beruf", "Schlosser")
xs = Create("Json")
Json("AddString", xs, "Beruf1", "Bäcker")
Json("AddString", xs, "Beruf2", "Metzger")
Json("AddString", xs, "Beruf3", "Schlosser")
WhileLoop 0, Json("Count", js) - 1
Print Json("GetString", js, "Beruf")
EndWhile
Print
WhileLoop 0, Json("Count", xs) - 1
Print Json("GetString", xs, SubStr$("Beruf1,Beruf2,Beruf3", &LOOP + 1, ","))
EndWhile
Waitkey
Funktioniert beim Objekt js auch nicht so, wie erwartet. Also können wir es schon mal bis dahin eingrenzen. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 26.03.2023 ▲ |
| |
| | Georg Teles | Ich vermute allerdings, dass die erste "Spalte" hier zwangsläufig ein "Primärschlüssel" ist, ähnlich der SQL Tabelle
Das Auslesen vermute ich erfolgt eben nach diesem Primärschlüssel ... ich kann nur vermuten, dass das eventuell technisch bedingt ist, dass man die Primärschlüssel irgendwie mappt oder "splittet" oder irgendwie listet, also schnell ausliest und dessen Werte als Array zuweist, andernfalls müsste man hingehen und die erste Spalte mit einer Schleife durchlaufen und die Werte (hier Key = Schlüssel) erst einmal einlesen und bestimmen, danach wieder eine Schleife laufen lassen, um die dazugehörigen Werte zuzuordnen ... glaub ich erzähle Schrott.
Auf jeden Fall ist es klar, dass bei gleichgenannten Schlüsseln die eben "unikal" sein müssen wenn man annimmt, dass die erste Spalte eben wie "Primärschlüssel" behandelt werden, und nun gleich heißen, hier schonmal die Werte einem falschen Schlüssel zugeordnet werden und wir haben den bekannten Effekt
aber das kann dir nur Roland sagen, wie es tatsächlich hinter den Kulissen ist |
| | | | |
| | H.Brill | Auf jeden Fall ist es irgendwie komisch, die Schlüssel kann man auslesen, obwohl sie identisch sind, bloß die dazu gehörende Werte nicht. Wenn ich jetzt SQL-Tabelle lese, die einen Primärschlüssel auf z.B. den Namen legt, frage ich mich aber auch, warum das dort funktioniert. Da können ja auch mehrere z.b. "Maier" vorkommen und der Index funktioniert trotzdem. Das ist ja der Vorteil einer solchen DB, daß man da eben alle "Maier" mit deren Werten nur mit einer einzigen SELCT-Anweisung rausziehen kann.
Jetzt schau mal, wie unterschiedlich Hash-Arrays beim Füllen reagieren. Normalerweise müßte ja jeweils das gleiche angezeigt werden :
Declare long js, hash Person1[], Person2[], Person3[], String key, value
Cls
js = Create("Json")
Json("AddString", js, "Beruf", "Bäcker")
Json("AddString", js, "Beruf", "Metzger")
Json("AddString", js, "Beruf", "Schlosser")
Person2["Beruf"] = "Bäcker"
Person2["Beruf"] = "Metzger"
Person2["Beruf"] = "Schlosser"
Person3[1, "Beruf"] = "Bäcker"
Person3[2, "Beruf"] = "Metzger"
Person3[3, "Beruf"] = "Schlosser"
Person1[] = Json("Hash", js)
ForEach Person1[], key, value
Print key, value
EndFor
Print "\n"
ForEach Person2[], key, value
Print key, value
EndFor
Print "\n"
ForEach Person3[], key, value
Print key, value
EndFor
Waitkey
Hier müßte man wissen, welche Methode RGH beim Befüllen des Hash-Array circa JSON (Json("Hash", js) verwendet. Json("GetString",..) scheint es mal nicht zu sein.
Wie schon gesagt, entweder wird nur das erste gefundene Attribut ausgelesen und dessen Wert bzw. angezeigt, oder eben alle Schlüssel mit den dazu gehörenden Werten.
Alles andere führt früher oder später zu Fehlfunktionen im Programm. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 30.03.2023 ▲ |
| |
|
AnswerTopic-Options | 15.662 Views |
ThemeninformationenDieses Thema hat 6 subscriber: |