Я пытаюсь написать функцию, которая будет вставлять информацию в мою базу данных, используя JSON или несколько параметров в URL-адресе.
Мне уже удалось создать функцию, которая возвращает информацию из моей базы данных клиенту, но не наоборот. Каждый найденный мной пример объясняет, как создать JSON, но не объясняет, как его получить с помощью System.JSON (Delphi 10.2).
Вот пример кода для функции GET, действительно работающей с моим Datasnap:
function TDM_Test.DS_getArticles(pStock : String): string;
begin
try
VGOutils.PR_logs('Get all articles from table');
VGOutils.FU_CheckConnect('1234567890');
with VGOutils.SQ_temp1 do
begin
SQL.Clear;
SQL.Add('SELECT code, name, price, seller, departement FROM articles');
SQL.Add('WHERE stock');
ParamByName('stock').AsString := pStock;
VGOutils.SQ_temp1.Open;
end;
GetInvocationMetadata().ResponseCode := 200;
GetInvocationMetadata().ResponseContent :=
VGOutils.PR_JSON(VGOutils.SQ_temp1, ['code', 'name', 'price', 'seller']);
except on E: Exception do
PR_error(E.Message);
end;
VGOutils.PR_Disconnect;
end;
Теперь мне нужно, чтобы клиент отправлял мне новые статьи на INSERT
в моей базе данных.
Единственное, что я не могу понять, это как объявить функцию и ее параметры.
Я хочу, чтобы клиент мог отправить мне JSON в этом правильном формате.
{"article":[{"code":"AAA","name":"car","price" : "10400.90", "sellers" : [{"seller1" : "Automaniac", "seller2" : "Autopro" }]}]}
Теперь я знаю, как разобрать его с помощью TJSONObject.ParseJSONValue()
, прочитав этот JSON RadStudio.
РЕДАКТИРОВАТЬ Если эта строка JSON жестко закодирована, она отлично работает с ParseJSONValue, но если строка берется из URL-адреса, моя строка JSON содержит только ]} и, очевидно, анализировать нечего.
function TDM_Test.DS_insertArticles(pUrlJsonString: String): string;
// Hardcoded JSON string
jsonString := '{"article":[{"code":"AAA","name":"car","price" : "10400.90", "sellers" : [{"seller1" : "Automaniac", "seller2" : "Autopro" }]}]}';
JSonValue := TJSONObject.ParseJSONValue(jsonString);
// String received in url
jsonString := pUrlJsonString;
JSonValue := TJSONObject.ParseJSONValue(pUrlJsonString);