Irgendwie verstehe ich was Du meinst, ich verstehe jedoch nicht, wo konkret das Problem liegt.
Da ich nur ein olles Delphi 7 habe, nix JSon und passende Klassen schon mitgeliefert, hab' ich mir mal für ein konkretes "JSon-Problem" folgende Hilfroutine geschrieben:
Delphi-Quellcode:
procedure MyJSonSplit(sl : TStringList);
var
input : TMemoryStream;
output : TMemoryStream;
ch : Char;
ch2 : Char;
cr : Char;
lf : Char;
i : Integer;
begin
input := TMemoryStream.Create;
output := TMemoryStream.Create;
for i := 0 to sl.Count - 1 do sl[i] := AnsiReplaceText(sl[i],'"','"');
sl.SaveToStream(input);
input.Position := 0;
if input.Size > 0 then begin
cr := #13;
lf := #10;
if input.Read(ch,1) > 0 then begin
repeat
case ch of
'{','[',']','}' : begin
output.Write(cr,1);
output.Write(lf,1);
output.Write(ch,1);
output.Write(cr,1);
output.Write(lf,1);
end;
',' : begin
input.Read(ch2,1);
case ch2 of
'"' : begin
output.Write(cr,1); // eventuell ersten 3 Zeilen weglassen?
output.Write(lf,1);
output.Write(ch,1);
output.Write(cr,1);
output.Write(lf,1);
output.Write(ch2,1);
end;
else
output.Write(ch,1);
input.Position := input.Position - 1;
end;
end;
else
output.Write(ch,1);
end;
if input.Position mod 1000 = 0 then Application.ProcessMessages;
until input.Read(ch,1) = 0;
end;
output.Position := 0;
sl.LoadFromStream(output);
end;
output.Free;
input.Free;
end;
Stringliste rein, Stringliste raus.
Damit sind alle Daten zeilenweise aufgebröselt.
Wenn man nun diese Struktur kennt, kann man das auch entsprechend in 'ner For-Schleife auswerten, Bereiche überlesen, ...
Eventuell wäre das ja ein Ansatz für Dich.
Und nein: Eine professionelle Lösung ist das nicht, für's Hobbyprogrammieren aber ausreichend