Autor Téma: Parser Json v Delphi XE2  (Přečteno 1001 krát)

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 496
  • Karma: 9
    • Verze Delphi: XE2
Parser Json v Delphi XE2
« kdy: 19-03-2024, 13:34:03 »
Zatím používám lkJSON  (pro načtení s ARESu) ale nyní bych to potřeboval na vážnější práci a narážím
na různé problémy  - například při čtení údaje z JSON  a ten "element"  zrovna neexistuje tak mi to spadne  na Access violation

Zkoušel jsem SuperObject  ale tam mi to nejde zkompilovat (zřejmě problém s funkci System.AtomicIncrement kterou XE nemají)

Máte pro nějaký jiný nástroj,  případně jak  rozchodit  SuperObject   v XE2

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7378
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Parser Json v Delphi XE2
« Odpověď #1 kdy: 19-03-2024, 17:05:03 »
Mám niečo staršie. Neviem aká to je verzia. Snáď Ti to pomôže.
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1564
  • Karma: 52
    • Verze Delphi: 11.3
Re:Parser Json v Delphi XE2
« Odpověď #2 kdy: 19-03-2024, 17:28:53 »

Offline mbx

  • Nováček
  • *
  • Příspěvků: 24
  • Karma: 1
    • Verze Delphi: 6-17
Re:Parser Json v Delphi XE2
« Odpověď #3 kdy: 19-03-2024, 18:40:44 »
Pokud se nepletu, tak lkJson vrati v pripade pozadavku na neexistujici element/field nil misto prislusneho lk objektu - tak to se da snadno osetrit...nebo si napis nejakou vlastni metodu, ktera ti v takovem pripade misto hodnoty vrati nejaky default, nejspis ''.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7378
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Parser Json v Delphi XE2
« Odpověď #4 kdy: 19-03-2024, 20:07:04 »
Pokud se nepletu, tak lkJson vrati v pripade pozadavku na neexistujici element/field nil misto prislusneho lk objektu - tak to se da snadno osetrit...
To robí aj SuperObject.
Win11 64b, Delphi 11.3.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 496
  • Karma: 9
    • Verze Delphi: XE2
Re:Parser Json v Delphi XE2
« Odpověď #5 kdy: 20-03-2024, 10:50:53 »
Používám tohle: https://github.com/neslib/Neslib.Json
Stáhl jsem si ,ale bohužel mi tam chybí požadovaný soubor  "Neslib.inc"

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1564
  • Karma: 52
    • Verze Delphi: 11.3
Re:Parser Json v Delphi XE2
« Odpověď #6 kdy: 20-03-2024, 11:00:15 »
Používám tohle: https://github.com/neslib/Neslib.Json
Stáhl jsem si ,ale bohužel mi tam chybí požadovaný soubor  "Neslib.inc"

To bude asi "This library only depends on the Neslib repository. It is included as submodule with this repository."
V seznamu souborů je na ni odkaz, https://github.com/neslib/Neslib/tree/5a97cc062a5ab02229d782abeec46968d3875df3

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 496
  • Karma: 9
    • Verze Delphi: XE2
Re:Parser Json v Delphi XE2
« Odpověď #7 kdy: 20-03-2024, 11:23:50 »
A já si to  přeložil jako tato knihovna je závislá pouze na NesLib souborech které jsou vloženy  .
Proč to nedistribují jako celek ...

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3442
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Parser Json v Delphi XE2
« Odpověď #8 kdy: 21-03-2024, 15:15:00 »
Nic lepsiho podle mne nez https://github.com/ahausladen/JsonDataObjects od A. Hausladena asi neni. Presel na to i DMVC framework a to je nejaka knihovna.
Embarcadero MVP - Czech republic

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 468
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Parser Json v Delphi XE2
« Odpověď #9 kdy: 22-03-2024, 13:39:15 »
Souhlasím s Radkem, JDO je dost dobré. Nicméně, opět se dá vylepšit, třeba inliningem a dalšími triky (například operátor = pro string mám pocit). Jen bacha na úplně nejvíc největší JSONy (800Mb).
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 559
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Parser Json v Delphi XE2
« Odpověď #10 kdy: 22-03-2024, 17:29:51 »
Excellent
Rated 1 time
https://github.com/hydrobyte/TestJSON

Tu si dal typek docela dost prace s porovnanim mnohych kniznic. Podla jeho nazoru jednu z top kniznic Grijjy.Bson som mu tam odporucil ja sam 🤷

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 468
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Parser Json v Delphi XE2
« Odpověď #11 kdy: 25-03-2024, 10:04:12 »
Nest.json vypada pekne a moc pekne napsanej take.
Jinak k tomu testu... Je trochu nefer a imho i trochu nereal, nebo 50tisic polozek na jedne urovni? Delam s Jsonem hodne, ale realne to pres desitky jde velice malokdy. Pak zakonite linearni hledani JDO jde do kelu. Zajimala by me ale na druhou stranu prace se strukturovanym, ale obrim jsonem, tam JDO neni schopno ani serializace (ebay seznam kategorii - 800Mb) - a to je uz realnejsi priklad.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 559
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:Parser Json v Delphi XE2
« Odpověď #12 kdy: 25-03-2024, 21:18:13 »
Nest.json vypada pekne a moc pekne napsanej take.
Jinak k tomu testu... Je trochu nefer a imho i trochu nereal, nebo 50tisic polozek na jedne urovni? Delam s Jsonem hodne, ale realne to pres desitky jde velice malokdy. Pak zakonite linearni hledani JDO jde do kelu. Zajimala by me ale na druhou stranu prace se strukturovanym, ale obrim jsonem, tam JDO neni schopno ani serializace (ebay seznam kategorii - 800Mb) - a to je uz realnejsi priklad.

Good point, tak mu to tam napis, mozno zakomponuje aj takyto druh testov  ;)

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 496
  • Karma: 9
    • Verze Delphi: XE2
Re:Parser Json v Delphi XE2
« Odpověď #13 kdy: 30-03-2024, 17:55:21 »
Tak asi oprava 
Tady je zřejmě ten správný SuperObject
https://github.com/hgourvest/superobject

Ten problém s nenalezenou System.AtomicIncrement měla na svědomí knihovna kterou jsem si stáhnul poprvé
https://github.com/pult/SuperObject.Delphi

Když to nyní testuji tak na rozdíl od lkJSON   nevyšiluje pokud element při parsování nenalezne nebo má hodnotu null

Offline František

  • Guru
  • *****
  • Příspěvků: 902
  • Karma: 8
    • Verze Delphi: comunity 10.4.2, D2007, D11
Re:Parser Json v Delphi XE2
« Odpověď #14 kdy: 08-04-2024, 11:58:36 »
SuperObject
https://github.com/hgourvest/superobject
pouzivam aj na XML k spokojnosti (hlavne rychlost)