Thema: Delphi JSon Formatieren

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#18

AW: JSon Formatieren

  Alt 24. Feb 2018, 15:52
Zitat:
HolgerX schrieb den Quelltext mit D6, da war UTF8String noch nicht "normal".
Ok habe es als string belassen macht keinen großen Unterschied.
Habe aber "in" mit CharInSet ersetzt.

Delphi-Quellcode:
function TTheMDB.FormatJSONStr(AString: string): string;
var
  idx : integer;
  InStr : boolean;
  i : integer;
begin

  Result := '';
  idx := 0;
  InStr := false;

  for i := 1 to length(AString) do
  begin
    if not InStr then
    begin
      if CharInSet(AString[i], [']','}']) then
      begin
        inc(idx, -1);
        Result := Result + #13#10 + StringOfChar(#9 , idx);
       end;
    end;

    Result := Result + AString[i];

    if AString[i] = '"then
      if (i > 1) and (AString[i-1] <> '/') then
        InStr := not InStr;

    if not InStr then
    begin
      if CharInSet(AString[i], [',']) then
        Result := Result + #13#10 + StringOfChar(#9 , idx);

      if CharInSet(AString[i], ['{','[']) then
      begin
        Inc(idx);
        Result := Result + #13#10 + StringOfChar(#9 , idx);
      end;
    end;
  end;
end;
Delphi-Quellcode:
// Format Json
lutf8 := UTF8String(FormatJSONStr(string(lutf8)));
lstream.Position := 0;
lstream.WriteBuffer(lutf8[1], length(lutf8));
@HolgerX
Herzlichen Dank.

so sieht es jetzt aus mehr wollte ich nicht
Code:
{
   "page":1,
   "total_results":1,
   "total_pages":1,
   "results":[
      {
         "vote_count":1810,
         "id":346672,
         "video":false,
         "vote_average":5.3,
         "title":"Underworld: Blood Wars",
         "popularity":18.494246,
         "poster_path":"\/v1nYlTaYPhVbdnfnp7VPl9wyV9U.jpg",
         "original_language":"en",
         "original_title":"Underworld: Blood Wars",
         "genre_ids":[
            28,
            14,
            27
         ],
         "backdrop_path":"\/PIXSMakrO3s2dqA7mCvAAoVR0E.jpg",
         "adult":false,
         "overview":"Vampir-Kriegerin Selene findet sich nach ihrem langjährigen Koma in einer Welt wieder, in der Menschen von der Existenz von Vampiren und Werwölfen wissen und mit allen Mitteln versuchen, beide Clans auszuradieren. Zwar konnte Selene ihre Hybrid-Tochter Eve mithilfe von David zuletzt aus der Gefangenschaft befreien, doch das heißt noch lange nicht, dass die Jagd auf ihre Rasse damit ein Ende gefunden hat. Darüber hinaus denkt Lykaner-Anführer Marius noch längst nicht an eine Aussöhnung ihrer Clans, nur weil beide übernatürlichen Spezies zur Zielscheibe geworden sind. Kann es Selene, David und dessen Vater Thomas gelingen, den ewigen Krieg zwischen Werwölfen und Vampiren zu beenden?",
         "release_date":"2016-11-28"
      }
   ]
}
gruss

Geändert von EWeiss (24. Feb 2018 um 18:17 Uhr)
  Mit Zitat antworten Zitat