🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
19 messages
19 total messages Started by goo-mlyny Wed, 17 Jan 2018 09:41
obróbka JSON
#346238
Author: goo-mlyny
Date: Wed, 17 Jan 2018 09:41
17 lines
1829 bytes
Mam takie coś (to przykład): 
{
  "success":true,
  "result":
    {
      "token":"bardzoskomplikowanyitajnytokenniewiadomodoczego",
      "profile":
        {
          "login":"tojest@email.email",
          "_id":"poin773451219hb65ss75",
          "lastSelectedOffice":"774hhs8nx8s66s234"
        }
    }
}

Jak sensownie wyciągać z tego dane? Np. że jest "success" i jaką ma wartość, że np. nie ma "password" (gdyby było, to mogłoby być na dowolnym poziomie zagłębienia),
że "result" to nie pojedyncza wartość itp.
Re: obróbka JSON
#346239
Author: Jan Drawski
Date: Wed, 17 Jan 2018 09:56
2 lines
1237 bytes
Do JSONa chyba najpopularniejszy:
https://github.com/hgourvest/superobject
Re: obróbka JSON
#346241
Author: Stregor
Date: Wed, 17 Jan 2018 12:24
47 lines
2194 bytes
W dniu 2018-01-17 o 10:41, goo-mlyny@ciach.net pisze:
 > Mam takie coś (to przykład):
 > {
 >    "success":true,
 >    "result":
 >      {
 >        "token":"bardzoskomplikowanyitajnytokenniewiadomodoczego",
 >        "profile":
 >          {
 >            "login":"tojest@email.email",
 >            "_id":"poin773451219hb65ss75",
 >            "lastSelectedOffice":"774hhs8nx8s66s234"
 >          }
 >      }
 > }
 >
 > Jak sensownie wyciągać z tego dane? Np. że jest "success" i jaką ma 
wartość,

Na przykład tak, używając wbudowanego JSONa (System.JSON):

lJSONString: string; //Twój JSON
lJson: TJSONObject;
lSuccess: TJSONBool;

lJson := TJSONObject.Create;
[...]
if lJson.Parse(BytesOf(lJSONString), 0) <> -1 then
begin
   lValue := TJSONBool(lJson.GetValue('success'));
   if Assigned(lValue) then
   begin
   end;
end
[...]

  że np. nie ma "password" (gdyby było, to mogłoby być na dowolnym 
poziomie zagłębienia),
 > że "result" to nie pojedyncza wartość itp.

Możesz dostać się do całego JSONA jako do tablicy i iterować po jej 
elementach:
https://stackoverflow.com/questions/14864170/how-to-parse-a-json-array-in-rad-studio

-- 
Pozdrawiam,
Stregor
Re: obróbka JSON
#346240
Author: goo-mlyny
Date: Wed, 17 Jan 2018 13:14
46 lines
2960 bytes
W dniu środa, 17 stycznia 2018 13:24:30 UTC+1 użytkownik Stregor napisał:
> W dniu 2018-01-17 o 10:41, goo-mlyny ... ciach.net pisze:
>  > Mam takie coś (to przykład):
>  > {
>  >    "success":true,
>  >    "result":
>  >      {
>  >        "token":"bardzoskomplikowanyitajnytokenniewiadomodoczego",
>  >        "profile":
>  >          {
>  >            "login":"tojest@email.email",
>  >            "_id":"poin773451219hb65ss75",
>  >            "lastSelectedOffice":"774hhs8nx8s66s234"
>  >          }
>  >      }
>  > }
>  >
>  > Jak sensownie wyciągać z tego dane? Np. że jest "success" i jaką ma 
> wartość,
> 
> Na przykład tak, używając wbudowanego JSONa (System.JSON):
> 
> lJSONString: string; //Twój JSON
> lJson: TJSONObject;
> lSuccess: TJSONBool;
> 
> lJson := TJSONObject.Create;
> [...]
> if lJson.Parse(BytesOf(lJSONString), 0) <> -1 then
> begin
>    lValue := TJSONBool(lJson.GetValue('success'));
>    if Assigned(lValue) then
>    begin
>    end;
> end
> [...]
O - to wygląda ciekawie. Popróbuję sobie, dzięki za naprowadzenie.

> 
>   że np. nie ma "password" (gdyby było, to mogłoby być na dowolnym 
> poziomie zagłębienia),
>  > że "result" to nie pojedyncza wartość itp.
> 
> Możesz dostać się do całego JSONA jako do tablicy i iterować po jej 
> elementach:
> https://stackoverflow.com/questions/14864170/how-to-parse-a-json-array-in-rad-studio
Re: obróbka JSON
#346242
Author: goo-mlyny
Date: Thu, 18 Jan 2018 11:21
3 lines
1604 bytes
W dniu środa, 17 stycznia 2018 13:24:30 UTC+1 użytkownik Stregor napisał:
>    lValue := TJSONBool(lJson.GetValue('success'));
Jakiego typu ma być lValue ?
Re: obróbka JSON
#346244
Author: goo-mlyny
Date: Thu, 18 Jan 2018 11:23
8 lines
1720 bytes
W dniu środa, 17 stycznia 2018 13:24:30 UTC+1 użytkownik Stregor napisał:
 
> Możesz dostać się do całego JSONA jako do tablicy i iterować po jej 
> elementach:
> https://stackoverflow.com/questions/14864170/how-to-parse-a-json-array-in-rad-studio
To nie radzi sobie np. z tym moim JSONem - pokazuje tylko 2 element, przy czym drugi - "result" nie ma wartości.

No nic, szukam i testuję dalej :)
Re: obróbka JSON
#346245
Author: Roman Tyczka
Date: Thu, 18 Jan 2018 11:56
19 lines
1566 bytes
On Thu, 18 Jan 2018 03:23:49 -0800 (PST), goo-mlyny@ciach.net wrote:

>> Możesz dostać się do całego JSONA jako do tablicy i iterować po jej 
>> elementach:
>> https://stackoverflow.com/questions/14864170/how-to-parse-a-json-array-in-rad-studio
> To nie radzi sobie np. z tym moim JSONem - pokazuje tylko 2 element, przy czym drugi - "result" nie ma wartości.

Nie to sobie nie radzi tylko Ty.
 
> No nic, szukam i testuję dalej :)

A może byś poczytał jak to działa i jak tego użyć? A najlepiej zacznij od
tego czym jest JSON, jaką ma strukturę i składnię.

https://pl.wikipedia.org/wiki/JSON

-- 
pozdrawiam
Roman Tyczka
Re: obróbka JSON
#346246
Author: Andrzej S
Date: Fri, 19 Jan 2018 12:37
10 lines
1445 bytes
W dniu 2018-01-18 12:56, Roman Tyczka pisze:

>
> A może byś poczytał jak to działa i jak tego użyć? A najlepiej zacznij od
> tego czym jest JSON, jaką ma strukturę i składnię.
>
> https://pl.wikipedia.org/wiki/JSON
>

Bardzo użyteczna pomoc mądralo.
Re: obróbka JSON
#346247
Author: Roman Tyczka
Date: Fri, 19 Jan 2018 13:35
18 lines
1520 bytes
On Fri, 19 Jan 2018 13:37:43 +0100, Andrzej S wrote:

>> A może byś poczytał jak to działa i jak tego użyć? A najlepiej zacznij od
>> tego czym jest JSON, jaką ma strukturę i składnię.
>>
>> https://pl.wikipedia.org/wiki/JSON
>>
> 
> Bardzo użyteczna pomoc mądralo.

Wiem, że "użyteczna pomoc" to wklejki gotowców, które się bezmyślnie
przekleja. Ale programowanie metodą Kopiego And Pejsta szybko się mści, a
jak się komuś nie chce czytać to dlaczego mam za niego odwalać robotę,
mądralo?

-- 
pozdrawiam
Roman Tyczka
Re: obróbka JSON
#346248
Author: ExM
Date: Mon, 22 Jan 2018 15:15
6 lines
1926 bytes
W dniu środa, 17 stycznia 2018 10:41:03 UTC+1 użytkownik goo-...@ciach.net napisał:
> Jak sensownie wyciągać z tego dane? Np. że jest "success" i jaką ma wartość, że np. nie ma "password" (gdyby było, to mogłoby być na dowolnym poziomie zagłębienia),
> że "result" to nie pojedyncza wartość itp.

Ja używam tego: https://www.winsoft.sk/json.htm
Działa też na starszych wersjach Delphi (np. 5 :) ) i daje fajne i proste narzędzia dostępu do wybranej gałęzi.
Re: obróbka JSON
#346249
Author: goo-mlyny
Date: Mon, 22 Jan 2018 15:59
5 lines
1701 bytes
W dniu poniedziałek, 22 stycznia 2018 16:15:08 UTC+1 użytkownik ExM napisał:
> 
> Ja używam tego: https://www.winsoft.sk/json.htm
> Działa też na starszych wersjach Delphi (np. 5 :) ) i daje fajne i proste narzędzia dostępu do wybranej gałęzi.
Dzięki, popatrzę sobie. 
Re: obróbka JSON
#346243
Author: Stregor
Date: Tue, 23 Jan 2018 08:17
11 lines
1543 bytes
W dniu 2018-01-18 o 12:21, goo-mlyny@ciach.net pisze:
> W dniu środa, 17 stycznia 2018 13:24:30 UTC+1 użytkownik Stregor napisał:
>>     lValue := TJSONBool(lJson.GetValue('success'));
> Jakiego typu ma być lValue ?

Pisałem z palca :)
zamiast lValue wpisz lSuccess, typu TJSONBool

-- 
Pozdrawiam,
Stregor
Re: obróbka JSON
#346250
Author: wloochacz
Date: Tue, 23 Jan 2018 15:27
14 lines
1839 bytes
W dniu 2018-01-22 o 16:15, ExM pisze:
> W dniu środa, 17 stycznia 2018 10:41:03 UTC+1 użytkownik goo-...@ciach.net napisał:
>> Jak sensownie wyciągać z tego dane? Np. że jest "success" i jaką ma wartość, że np. nie ma "password" (gdyby było, to mogłoby być na dowolnym poziomie zagłębienia),
>> że "result" to nie pojedyncza wartość itp.
> 
> Ja używam tego: https://www.winsoft.sk/json.htm
> Działa też na starszych wersjach Delphi (np. 5 :) ) i daje fajne i proste narzędzia dostępu do wybranej gałęzi.

To już chyba lepiej, a na pewno taniej (bo za free) skorzystać TDocVariant:
https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_80
http://blog.synopse.info/post/2014/02/25/TDocVariant-custom-variant-type

-- 
wloochacz
Re: obróbka JSON
#346251
Author: goo-mlyny
Date: Wed, 24 Jan 2018 07:41
7 lines
1877 bytes
W dniu wtorek, 23 stycznia 2018 16:27:13 UTC+1 użytkownik wloochacz napisał:
> To już chyba lepiej, a na pewno taniej (bo za free) skorzystać TDocVariant:
> https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_80
> http://blog.synopse.info/post/2014/02/25/TDocVariant-custom-variant-type
Też wygląda bardzo ciekawie i wydaje się dobrze udokumentowane. W weekend potrenuję :)

Andrzej
Re: obróbka JSON
#346252
Author: ExM
Date: Wed, 24 Jan 2018 08:49
9 lines
2215 bytes
W dniu wtorek, 23 stycznia 2018 16:27:13 UTC+1 użytkownik wloochacz napisał:
> To już chyba lepiej, a na pewno taniej (bo za free) skorzystać TDocVariant:
> https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_80
> http://blog.synopse.info/post/2014/02/25/TDocVariant-custom-variant-type

No... ciekawe narzędzie. Nie wiem tylko czy uda mi się go odpalić na Delphi 5
Dla tego wybrałem WinSoft że działa na staruszku D5 w którym projekt muszę ciągnąć. Większość komponentów i bibliotek które robią coś z JSONem wymaga modułu variants.pas który pojawił się bodajże od Delphi 2010

Ale kto wie ... może synopse zadziała - sprawdzę. Pytanie jeszcze o ile większy będzie kod aplikacji :P
Re: obróbka JSON
#346253
Author: wloochacz
Date: Wed, 24 Jan 2018 12:02
18 lines
2209 bytes
W dniu 2018-01-24 o 09:49, ExM pisze:
> W dniu wtorek, 23 stycznia 2018 16:27:13 UTC+1 użytkownik wloochacz napisał:
>> To już chyba lepiej, a na pewno taniej (bo za free) skorzystać TDocVariant:
>> https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_80
>> http://blog.synopse.info/post/2014/02/25/TDocVariant-custom-variant-type
> 
> No... ciekawe narzędzie. Nie wiem tylko czy uda mi się go odpalić na Delphi 5
> Dla tego wybrałem WinSoft że działa na staruszku D5 w którym projekt muszę ciągnąć. Większość komponentów i bibliotek które robią coś z JSONem wymaga modułu variants.pas który pojawił się bodajże od Delphi 2010
Bodajże to bzdura na resorach; oidp, to modul variants jest od Delphi 6.
Wcześniej taki typ też był, ale nie pamiętam w jaki module (SysUtils?).

> Ale kto wie ... może synopse zadziała - sprawdzę. Pytanie jeszcze o ile większy będzie kod aplikacji :P
Powinno działać, autor pisze o tym tu:
https://synopse.info/forum/viewtopic.php?id=1918


-- 
wloochacz
Re: obróbka JSON
#346254
Author: ExM
Date: Wed, 24 Jan 2018 12:42
12 lines
2635 bytes
W dniu środa, 24 stycznia 2018 13:02:55 UTC+1 użytkownik wloochacz napisał:
> Bodajże to bzdura na resorach; oidp, to modul variants jest od Delphi 6.
> Wcześniej taki typ też był, ale nie pamiętam w jaki module (SysUtils?).
Czepiasz się nieistotnych szczegółów. Ważne że w D5 nie ma.

Nie napisałem że w D5 brakuje >>typu<< variant ale >>modułu<< variant.pas w którym są funkcje nieobecne w D5. 
Walczyłem z próbami dostosowania najbardziej popularnych obecnie komponentów JSON ale zbyt wielu funkcji z variant.pas brakowało. Chciałem nawet przenieść do D5 ten moduł w całości ale jak zaczęły się zależności do kolejnych to odpuściłem a bez tego nie dało się skompilować komponentów JSONowych 

> > Ale kto wie ... może synopse zadziała - sprawdzę. Pytanie jeszcze o ile większy będzie kod aplikacji :P
> Powinno działać, autor pisze o tym tu:
> https://synopse.info/forum/viewtopic.php?id=1918
To dobra wiadomość - na pewno sprawdzę szczególnie że Synopse ma znacznie więcej ciekawych funkcji. Dzięki za info.
Re: obróbka JSON
#346255
Author: Roman Tyczka
Date: Wed, 24 Jan 2018 19:23
17 lines
1732 bytes
On Wed, 24 Jan 2018 04:42:04 -0800 (PST), ExM wrote:

>> Bodajże to bzdura na resorach; oidp, to modul variants jest od Delphi 6.
>> Wcześniej taki typ też był, ale nie pamiętam w jaki module (SysUtils?).
> Czepiasz się nieistotnych szczegółów. Ważne że w D5 nie ma.

Trzymając się D5 skazujesz się na korzystanie ze starych i zacofanych
narzędzi, bibliotek i technologii, po prostu świat poszedł do przodu i
Delphi, które ma obecnie prawie 20 lat jest zwyczajnie antyczne.
Zamiast się z tym siłować wybierz inną drogę:
- zainwestuj w nowe środowisko
- użyj darmowej wersji Starter
- przejdź na FPC i Lazarusa

-- 
pozdrawiam
Roman Tyczka
Re: obróbka JSON
#346256
Author: ExM
Date: Wed, 24 Jan 2018 20:51
28 lines
3451 bytes
W dniu środa, 24 stycznia 2018 20:23:05 UTC+1 użytkownik Roman Tyczka napisał:
> On Wed, 24 Jan 2018 04:42:04 -0800 (PST), ExM wrote:
> 
> >> Bodajże to bzdura na resorach; oidp, to modul variants jest od Delphi 6.
> >> Wcześniej taki typ też był, ale nie pamiętam w jaki module (SysUtils?).
> > Czepiasz się nieistotnych szczegółów. Ważne że w D5 nie ma.
> 
> Trzymając się D5 skazujesz się na korzystanie ze starych i zacofanych
> narzędzi, bibliotek i technologii, po prostu świat poszedł do przodu i
> Delphi, które ma obecnie prawie 20 lat jest zwyczajnie antyczne.

Nie do końca. O ile samo Delphi faktycznie sporo obecnie ułatwia pisanie kodu o tyle dzięki temu że korzystam w nim z całkiem współczesnych komponentów to aplikacja wygląda całkiem ładnie i dostarcza wszelkich współczesnych technologii (np.: REST/JSON, db od Devart czy raporty na Fast Report)

> Zamiast się z tym siłować wybierz inną drogę:
> - zainwestuj w nowe środowisko
> - użyj darmowej wersji Starter
> - przejdź na FPC i Lazarusa

Tak też uczyniłem - mam XE7 Professional i przygotowuje się do przejścia.
Ale ilość problemów jakie czekają po drodze jest ogromna.
Zaczynając od zmiany obsługi kodowania String'a przez aktualizację naprawdę wielu komponentów część nie ma aktualizacji do obecnej wersji Delphi.
Więc obecnie powoli rzeźbię poprawki do komponentów które nie były rozwijane lub szukam zamienników. 

Na szczęście wiele z nich już od pewnego czasu pozamieniałem w D5 na takie które są nadal rozwijane (Devart, FastReport, JEDI, ImageEN, XDBGrid...)

Projekt niestety jest bardzo duży i przeniesienie do XE pociąga za sobą masę nietypowych problemów

:)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads