Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   JSON rekursiv nach Eintrag suchen (https://www.delphipraxis.net/208940-json-rekursiv-nach-eintrag-suchen.html)

Peter666 2. Okt 2021 10:30

JSON rekursiv nach Eintrag suchen
 
Hi,

ich versuche gerade einen Eintrag iterativ in einem JSONObject zu suchen, aber das gelingt mir irgendwie nicht.

Das Json schaut ungefähr so aus:

{
"1":"",
"2":0,
"3":0,
"4":{
"1":{
"name":{
"pre":"",
"sur":"",
},
}
}
}

Ich wollte gerne sowas wie FindValue(JSON, 'pre') realisieren. Im Prinzip kann ich auch so etwas wie

Found := JSON.GetValue('4') as TJSONValue;
Found := Found.GetValue<TJsonValue>('1');
Found := Found.GetValue<TJsonValue>('name');
found.GetValue<string>('pre')

machen, aber das finde ich nicht wirklich praktisch in dem Fall.

TiGü 6. Okt 2021 10:40

AW: JSON rekursiv nach Eintrag suchen
 
Delphi-Quellcode:
const
    // Der Formatter vom Forum zerstört die Leerzeichen, ist eigentlich alles schön eingerückt
    THE_JSON =
    '{                  ' + sLineBreak +
    ' "1":"",         ' + sLineBreak +
    ' "2":0,          ' + sLineBreak +
    ' "3":0,          ' + sLineBreak +
    ' "4":{            ' + sLineBreak +
    '   "1":{          ' + sLineBreak +
    '     "name":{     ' + sLineBreak +
    '       "pre":"", ' + sLineBreak +
    '       "sur":""  ' + sLineBreak +
    '     }            ' + sLineBreak +
    '   }              ' + sLineBreak +
    ' }                ' + sLineBreak +
    '}';
var
    LWholeJson: TJSONValue;
    LPreJson: TJSONValue;
begin
    LWholeJson := TJSONObject.ParseJSONValue(THE_JSON, True, True);
    try
        LPreJson := LWholeJson.FindValue('4.1.name.pre');
        OutputDebugString(PChar('Content of "pre": ' + LPreJson.ToJSON));
    finally
        LWholeJson.Free;
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz