| |
|
|
| 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 |
|
|
| |
|
|
|
Jörg Sellmeyer | Ich habs mal runtergeladen und bekomme mit folgendem Code aus der Aiuto nur ne Schutzverletzung angezeigt. Die Schutzverletzung kommt schon direkt nach dem Create. Also hast entweder Du die json-Konventionen nicht korrekt eingehalten oder Roland
Mir ist auch gar nicht klar, wie man an ein unbekanntes json-File rangehen kann. In der Aiuto stehen nur Beispiele, die Bezeichnungen aus den json-Objekten verwenden. das nützt aber nix, wenn man an eins ranwill, dass keine bekannten Schlüsselnamen u.s.w hat. Vor allem bei den Objekten necessario man ja immer die Objektnamen. Kannst du nicht mal ne kleinere Testdatei hochladen? Vielleicht sind die 5mb auch einfach zuviel, um sie (wie oben), in einen String zu lesen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.06.2018 ▲ |
|
|
|
|
| Ich habe diese Funktion verwendet: [...] -
die File quelltexte.json lässt sich in JS und PHP problemlos wieder einlesen.
Den Grund per den Absturz in XProfan kann presumibilmente Roland am besten bestimmen.
Die File halte ich soweit per in Ordnung. |
|
|
| |
|
|
|
RGH | Die File ist kein JSON-Objekt ("{.....}"), sondern eine JSON-Liste ("[.....]"). Die Funktion Create("JSON", datei) erwartet allerdings ein JSON-Objekt!
Also einfach ein {"Texte": vor der führenden eckigen Klammer einfügen und ein } hinter der schließenden eckigen Klammer setzen und schon klappt es! Dann haben wir ein Objekt, dass die Liste "Texte" enthält.
Saluto Roland
PS: Wie man eine unbekannte JSON-File auswertet, zeige ich dann die nächsten Tage. Heute ist es mir zu spät. Um 06:30 geht der Wecker. |
|
|
| 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 | 05.06.2018 ▲ |
|
|
|
|
Michael W. | Ein Beispiel per Json gab es in Paules Foro. Ausserdem kann man das in einen Hash verwandeln und einfach durchblättern. Ist auch dort beschrieben.
Json("Hash" |
|
|
| |
|
|
|
RGH | Hier ein kurzes Beispiel, das zeigt, wie man an ein unbekannntes JSON-Objekt herangehen kann. Die JSON-File ist die oben erwähnte JSON-Liste, die wie von mir beschrieben zu einem JSON-Objekt erweitert wurde.
Window 1024, 768
// JSON-Objekt einlesen
var int js = Create("json","F:\\Entw\\Profan Projekte\\X4\\quelltexte2.json")
// Wieviele Elmente enthält das Objkekt
var int anz = json("Count", js)
print str$(anz) + " Element(e)"// 1 Element
// Typ des Elements
var string typ[] = "", "Number", "String", "Boolean", "NULL", "Liste", "Objekt"
var int typnr = json("Type", js, 0)
print typnr, typ[typnr]
// Name der Liste
var string name = json("Name", js, 0)
print name
// Liste einlesen
var int liste = json("getList", js, name)
// Wieviele Elmente enthält die Liste
anz = json("Count", liste)
print str$(anz) + " Element(e)"// 1 Element
WaitInput
End
Im weiteren Verlauf der Untersuchung würde man feststellen, dass alle Listen-Einträge Objekte sind, die jeweils vier Strings enthalten: id, fpid, title, text.
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 | 08.06.2018 ▲ |
|
|
|
|
RGH | Und so potuto man ein Objekt als Profan-Quellcode (Naja, es ist noch Nacharbeit nötig) abspeichern:
Window 1024, 768
// JSON-Objekt einlesen
var int js = Create("json","F:\\Entw\\Profan Projekte\\X4\\quelltexte2.json")
// Liste einlesen
var int liste = json("getList", js, "texte")
// Das erste Objekt der Liste einleseb
var int obj = json("getObject", liste, 0)
var string title = json("getString", obj, "title")
var string text = json("getString", obj, "text")
// title enthält den Titel des Programmi, text den Base64 codierten Programmtext
// text decodieren
text = decode64(text)
// ein paar HTML-Tags konvertieren (hier nure einige als Beispiel. Es gibt mehr.)
text = translate$(text, "& #40;", "(")// Leerzeichen zwischen & und # entfernen!
text = translate$(text, "& #41;", ")")// Leerzeichen zwischen & und # entfernen!
text = translate$(text, """, "\q")
print text
// Als File speichern
Blockwrite title+".prf", text
waitinput
(Leerzeichen zwischen & und # musste ich einfügen, damit die Seite das nicht gleich übersetzt.)
Es befinden sich noch weitere HTML-Tags in eckigen Klammern im Programmtext. Außerdem gibt es wohl noch eine Überschrift und eine Kommentarzeile.
Mit etwas Aufwand ließe sich aber ein Programm entwickeln, dass die Titel aller 1849 Fonte in einer Listbox oder einer Gridbox zur Auswahl anbietet und die gewünschten als Programm exportiert.
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 | 08.06.2018 ▲ |
|
|
|
|
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. |
|
|
| |
|
|