Registriert seit: 16. Dez 2005
Ort: NRW
232 Beiträge
Delphi 12 Athens
|
Replace JSON Escape Steuerzeichen
19. Mär 2020, 10:48
Ist das hier die richtige Stelle im Forum?
Soll einfach nur ein Tipp sein.
Ich bekomme über eine REST-Schnittstelle JSON Daten mit Escape-Steuerzeichen. Diese muss ich rausfiltern, bzw. ersetzen.
Da ich nichts gefunden habe, hier meine Routine.
Falls jemand auch sowas sucht
Delphi-Quellcode:
function ReplaceJSONEscape( JSONString: String): String;
// Backslash's ohne richtigen Code bleiben im Text erhalten
var
p1: Integer;
l: Integer;
i: Integer;
c: Char; // = WideChar
begin
result := JSONString;
p1 := pos('\', JSONString);
l := length(JSONString);
if (p1 = 0) or (p1 = l) then
exit;
c := JSONString[p1+1];
case c of
'"' : result := copy( JSONString, 1, p1-1) + '"' + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'\' : result := copy( JSONString, 1, p1-1) + '\' + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'/' : result := copy( JSONString, 1, p1-1) + '/' + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'b' : result := copy( JSONString, 1, p1-1) + #8 + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'f' : result := copy( JSONString, 1, p1-1) + #12 + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'n' : result := copy( JSONString, 1, p1-1) + #10 + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'r' : result := copy( JSONString, 1, p1-1) + #13 + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
't' : result := copy( JSONString, 1, p1-1) + #9 + ReplaceJSONEscape( copy( JSONString, p1+2, l-p1-2));
'u' : begin
if l < (p1+5) then
exit;
i := StrToIntDef('$' + copy( JSONString, p1+2, 4), 0);
if i = 0 then
exit;
result := copy( JSONString, 1, p1-1) + char(i) + ReplaceJSONEscape( copy( JSONString, p1+6, l-p1-6));
end
else
result := copy( JSONString, 1, p1) + ReplaceJSONEscape( copy( JSONString, p1+1, l-p1-1));
end; // case
end;
Thomas (Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
|