1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan
  5. Anregungen und Bugreports

JSON

  • H.Brill
  • 27. Dezember 2021 um 18:30
  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 27. Dezember 2021 um 18:30
    • #1

    Hallo,

    ich hätte da noch eine Anregung für Version X5, falls es diese mal geben sollte.

    Die interne Listboxliste ist ja Dreh - und Angelpunkt und bei den Move-Funktionen

    überall present und beliebt.

    Gerade in Bezug auf JSON - Listen und in Verbindung zu Move("ToList/ListTo", ....)

    wäre sie doch interessant.

    Code
    Move("ListToJsonlist", Jsonliste)
    
    Move("JsonListToList", Jsonliste)

    Das würde das Umkopieren in eine andere Liste, z.B. Listbox mit

    Move("ListToHandle", Handle)

    sehr beschleunigen. Auch der umgekehrte Weg von Listbox zu JSON - Liste

    ist dann interessant.

    Klar ist, daß man das auch selber von Hand machen könnte, z.B. mit SubProc.

    Aber das könnte man als Ersatz für die vorhandenen Move-Funktionen auch.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 28. Dezember 2021 um 12:36
    • #2

    Hab mal etwas JSON gespielt.

    Interessant sind ja auch die variablen Listen, die man mit

    JSON erstellen kann. Da bin ich auf den Gedanken gekommen,

    eine kleine Datenbank mit verschiedenen Objekten mit integrierten

    Listen zu erstellen.

    Heraus gekommen ist das hier :

    Code
    Declare Long ds1, ds2, ds3, daten, ks, l1, l2, l3, liste1, liste2, liste, anz
    Declare String text
    
    WindowTitle "ds1ON - TEST"
    Window 640, 800
    ds1    = Create("JSON")
    ds2    = Create("JSON")
    ds3    = Create("JSON")
    daten  = Create("JSON")
    liste  = Create("JSON")
    
    l1 = Json("NewList")
    l2 = Json("NewList")
    l3 = Json("NewList")
    
    If ds1
       Json("AddString", ds1, "Nr", "1")
       Json("AddString", ds1, "Name", "Hans Mustermann")
       Json("AddString", ds1, "Ort", "Musterhausen")
       Json("AddString", l1, "Reiten")
       Json("AddString", l1, "Golfen")
       Json("AddString", l1, "Kegeln")
       Json("AddList",   ds1, "Hobbys", l1)
    EndIf
    
    If ds2
       Json("AddString", ds2, "Nr", "2")
       Json("AddString", ds2, "Name", "Kurt Meier")
       Json("AddString", ds2, "Ort", "Hamburg")
       Json("AddString", l2, "Schwimmen")
       Json("AddString", l2, "Segeln")
       Json("AddString", l2, "Windsurfen")
       Json("AddString", l2, "Fallschirmspringen")
       Json("AddList",   ds2, "Hobbys", l2)
    EndIf
    
    If ds3
       Json("AddString", ds3, "Nr", "3")
       Json("AddString", ds3, "Name", "Egon Maierbär")
       Json("AddString", ds3, "Ort", "Düsseldorf")
       Json("AddString", l3, "Gärtnern")
       Json("AddString", l3, "Wandern")
       Json("AddString", l3, "Skilaufen")
       Json("AddString", l3, "Radfahren")
       Json("AddString", l3, "Tanzen")
       Json("AddList",   ds3, "Hobbys", l3)
    EndIf
    
    Json("AddObject", liste, "1", ds1)
    Json("AddObject", liste, "2", ds2)
    Json("AddObject", liste, "3", ds3)
    
    Json("Write",     liste, "F:\Jsonliste.txt") ' Hier Pfad anpassen.
    ks = Create("JSON", "F:\Jsonliste.txt")
    
    anz = Json("Count", ks)
    
    WhileLoop 0, anz - 1
       daten = Json("GetObject", ks, Str$(&LOOP + 1))
       text = Json("TEXT", daten, 1)
       Print text
    EndWhile
    
    Print
    Print "Ende mit Taste..."
    
    Waitkey
    
    End
    Alles anzeigen

    Das eignet sich natürlich nur für kleine Datenmengen, also nicht für Hunderte oder

    Tausende von Datensätzen. Denkbar wären da vielleicht kleine Einkaufslisten für

    jeden Tag oder verschiedene Geschäfte.

    Vielleicht kann es ja jemand gebrauchen und es sich auf seine Wünsche abändern..

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 9. Januar 2022 um 21:48
    • #3

    Heinz, dein obiger Beitrag ist für mein schon so lange geplantes VORRÄTE-LAGER-UND ABLAUFDATUM-WARNPROGRAMM geradezu ideal. Mir fehlt momentan umbaubedingt leider die Zeit fürs programmieren - aber vielleicht kommt mir ja jemand zuvor (hoffentlich)? :oops:

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 8. März 2023 um 11:16
    • #4

    Was ich noch fragen wollte :

    Hat jemand noch zusätzliche Json - Funktionen außer dem Json("Parse,. text) entdeckt,

    die RGH vielleicht auch nicht in der Hilfe erwähnt hat ?

    Was mir noch fehlt, ist das Löschen (Remove) und Ändern eines Objectes bzw. Wertes.

    Oder eine Liste komplett löschen u. ä.

    Andernfalls muß ich mal schauen, daß ich was selber über SubProc mache.

    Mit Json(Text",..) und Json("Parse,..) müßte ich dann im Json-String rumfriemeln.

    Also mit Json("Text",..) den String laden, Einträge löschen bzw. ändern und mit

    JSon("Parse,..) wieder zurück in ein JSon-Object schreiben.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • H.Brill
    Stammuser
    Reaktionen
    508
    Beiträge
    1.192
    • 29. März 2023 um 11:30
    • #5

    Vielleicht hat ja RGH einmal Lust, einen Patch für den Json-Container zu machen.

    Ich habe hier mal einige Vorschläge (längst nicht alles, wenn ich mir die Json-Funktionen in

    PureBasic so ansehe).

    Spoiler anzeigen

    Json("SetString", js, [name], string)

    Json("SetNumber", js, [name], wert)

    Json("SetBool", js, [name], wert)

    Json("SetObject", js, name, attr, wert|string)

    Json("RemoveString", js, [name], string)

    Json("RemoveNumber", js, [name], wert)

    Json("RemoveBool", js, [name], wert)

    Json("RemoveObject", js, name)

    Das ganze dann auch für Listen, wie z. B. beiJson("AddString", [name], string) erwähnt :

    Im Falle einer Liste wird kein Attributsname benötigt. Da könnte dann ein Index (idx) angegeben

    werden.

    oder gar das Einfügen einer Struktur als Attributsnamen :

    Struct Kunde = Name$, Strasse$, Ort$, Umsatz$, Status$

    oder einfach als String : Kunde$ = "Name,Strasse,Ort,Umsatz,Status"

    Json("AddStruct", js, Kunde$)

    oder auch so :

    Json("AddArray", Aarray(String "Name" ,"Strasse", "Ort", "Umsatz", "Status")

    Vielleicht ginge auch eine direkte Belegung mit Werten : "Name:'RGH'", Strasse:'Bahnhofstr.'", "Ort:'Nußloch'", "Umsatz:5000", "status:1"

    Das ginge dann in einem Rutsch.

    Auch für die Listen wäre interessant, wenn man diese direkt

    mit einem (temp. dynamisches) Array, String mit Delimitern,

    int. Listboxliste usw. füllen könnte.

    Da könnte man bestimmt noch mehr Funktionen erwähnen.

    PS: Was mich auch etwas stört, ist, daß bei Json("GetNumber", js, [name]|idx) eine Fießkommazahl zurück gegeben wird.

    Sowas wäre doch einen Patch wert ?

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

Windows 11

Ähnliche Themen

  • BKA-Virus / -Trojaner auf dem Rechner?

    • Bastian
    • 15. Dezember 2021 um 22:09
    • Viren-Forum
  • Firefox: Seit Update auf Version 92.0.1 Menüleiste und Einstellungen nur "englisch"

    • WilhelmR70
    • 25. September 2021 um 05:48
    • Browser und E-Mail
  • Firefox: Bei den Lesezeichen versehentlich einen Ordner gelöscht. Aus einem Backup wieder zurückholen?

    • Cyborg.XXL
    • 25. Juli 2021 um 21:29
    • Browser und E-Mail
  • Update für Open-Source-Datenbank MariaDB: verbesserte Oracle-Kompatibilität

    • Info
    • 23. Juni 2021 um 13:51
    • Nachrichten von heise.de
  • Infrastructure as Code: AWS CloudFormation Guard 2.0 allgemein verfügbar

    • Info
    • 18. Mai 2021 um 12:05
    • Nachrichten von heise.de
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™