- Код: Выделить всё
....
function THTTPSender.StringToJSON(src: String): TJSONObject;
var JsonParser: TJSONParser;
jo: TJSONObject;
begin
result:=nil;
if src<>'' then
Begin
try
try
JsonParser:=TJSONParser.Create(src);
jo:=JsonParser.Parse as TJSONObject;
result:=jo;
Addlog('result StringToJSON: '+jo.AsJSON);
except
on E:Exception do Addlog('!!! Exception [StringToJSON]: '+E.Message);
end;
finally
JsonParser.free;
end;
end;
end;
function THTTPSender.JSONToString(src: TJSONObject): String;
begin
try
result:='';
if src<>nil Then
begin
src.FormatJSON(AsCompressedJSON,2);
result:=src.AsJSON;
end;
Addlog('result JsonToString: '+result);
except
on E:Exception do
Begin
Addlog('!!! Exception [JSONToString]: '+E.Message);
result:='';
end;
end;
end;
function THTTPSender.Send(Data: TJSONObject): boolean;
begin
AddLog('send json');
ClearSendData;
if Data<>nil then
Begin
fJSONData:=StringToJSON(JSONToString(Data));
AddLog('send data: '+fJSONData.AsJSON);
end
else AddLog('send data: nil');
result:=Post; // передача данных методом post
end;
....
Всё работает, но периодически. клинит, и при каждом вызове метода send( ) получаю "странное" преобразование от слова совсем странное.
По логам смотрю и из вполне нормального переданного в Data объекта json
{ "type" : "request_data", "sn" : 1646021 }
получаю вот это
result JsonToString: type"request_data"sn1646021
т.е. хоть стреляй, но если хоть раз его так переклинило, то все остальные вызовы метода send преобразуют json в такое вот безобразие, хоть какой json передай