| |
|
|
| Ich habe mitbekommen, dass JSON-Verarbeitung mit aktuellem XProfan direkt möglich sein soll.
Wer möchte, der kann hier eine aktuelle Kopie aller Quelltexte [...] als JSON-Datei herunterladen:
Herunterladen
Ich kann es selbst noch nicht testen aber vielleicht hat ja jemand Spaß 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 möglich. |
| 1.719 kB | | Bezeichnung: | quelltexte.json | | Version: | 04.06.2018 | | Kurzbeschreibung: | Quelltexte als JSON-Datei | | Hochgeladen: | 04.06.2018 | | Ladeanzahl: | | | | Herunterladen |
|
|
| |
|
|
|
Jörg Sellmeyer | Ich habs mal runtergeladen und bekomme mit folgendem Code aus der Hilfe 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 Hilfe 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 benötigt 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 Datei quelltexte.json lässt sich in JS und PHP problemlos wieder einlesen.
Den Grund für den Absturz in XProfan kann vermutlich Roland am besten bestimmen.
Die Datei halte ich soweit für in Ordnung. |
|
|
| |
|
|
|
RGH | Die Datei 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.
Gruß Roland
PS: Wie man eine unbekannte JSON-Datei 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 für Json gab es in Paules Forum. 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-Datei 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.
Gruß 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 könnte 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 Programmes, 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 Datei 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 Quelltexte in einer Listbox oder einer Gridbox zur Auswahl anbietet und die gewünschten als Programm exportiert.
Gruß 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 läuft, 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 für 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]*~]", "")
Gruß 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 Hilfe 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 könnte man die obige Datei 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.
Gruß 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 Hilfe 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. |
|
|
| |
|
|