私はDelphi Tokyo 10.2 Update 1とRESTRequest、RESTResponse、RESTClientコンポーネントを使用してRESTサーバーと通信しています。これはREST/JSONでの最初の試みです。Delphi/REST/JSON
私は正常にログイン要求(POST)を送信し、期待される応答(GUID)を受け取りました。その後、GUIDを使用してさまざまな他のリクエスト(GET)を行います。リクエストのうち2つが空のファイルを返送し、JSONテンプレートをドキュメント化し、次にそれを移入する必要があります。これは私が立ち往生している場所です。 JSONオブジェクトのプロパティ値を更新する最善の方法が不明です。ここで
は、私は戻って取得しています空のJSONファイルのテンプレートです:{
"boxId": 0,
"changedBy": 0,
"customSort": "",
"dateChanged": "1990-01-01T00:00:00",
"dateStarted": "1990-01-01T00:00:00",
"destruction": "1990-01-01T00:00:00",
"documentCount": 0,
"documents": {
"TotalCount": 0,
"Collection": [
]
},
"extraData": {
"TotalCount": 0,
"Collection": [
]
},
"fieldDefs": {
"TotalCount": 0,
"Collection": null
},
"field": [
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
"fileId": 0,
"filePtr": 0,
"id": 0,
"isIndexed": false,
"keyValue": "",
"keyVisualValue": "",
"labelPrinted": "1990-01-01T00:00:00",
"lineItems": {
"TotalCount": 0,
"Collection": [
]
},
"notes": "",
"objectType": 5,
"projectId": 0,
"routeInfo": null,
"routingDoc": null,
"remoteId": 0,
"saveNotesOnly": false,
"saveStyle": -999,
"status": 1,
"syncFlag": 0,
"totalDocumentCount": 0,
"viewerContext": 0
}
Pythonでは、私は単純にどうなるフィールドプロパティ配列の最初の2つの値を移入します
inc_filetemplate = json.loads(requests.get(NEWFILE_string).text)
inc_doctemplate = json.loads(requests.get(NEWDOC_string).text)
filetemplate = inc_filetemplate
doctemplate = inc_doctemplate
filetemplate['field'][1] = dcn
filetemplate['field'][2] = batchname
EASYを!!!! ;)
これを行うには、どのような方法が最適ですか?
「フィールド」配列から値を取得できます(この例では最初の2つは空になります)。これらの項目の値を設定する最も良い方法は不明です。
これは私が始めたものである:
procedure PopulateFileTemplate(const AFileTemplate: String);
var
JO: TJSONObject;
JOPair: TJSONPair;
JOArray: TJSONArray;
FieldDCN: String;
FieldBatchName: String;
begin
JO := TJSONObject.ParseJSONValue(AFileTemplate) as TJSONObject;
try
if JO = nil then
begin
MessageDlg('Unable to parse JSON file template.', mtError, [mbOK], 0);
Exit;
end;
JOArray := JO.Get('field').JsonValue as TJSONArray;
FieldDCN := JOArray.Items[0].Value;
FieldBatchName := JOArray.Items[1].Value;
Memo1.Lines.Add('The old value of DCN is: ' + FieldDCN);
Memo1.Lines.Add('The old value of BatchName is: ' + FieldBatchName);
// Best way to set Values here???????
Memo1.Lines.Add('The new value of DCN is: ' + FieldDCN);
Memo1.Lines.Add('The new value of BatchName is: ' + FieldBatchName);
finally
JO.Free;
end;
end;
スーパーオブジェクトなどのJSONライブラリを選択する必要があります。 –
Delphiには独自の[JSONフレームワーク](http://docwiki.embarcadero.com/RADStudio/ja/JSON)もRTLに組み込まれています。 –
私はRTLに組み込まれたJSONフレームワークを見て遊んでいます。しかし、私は何か正しいことをしていないか、JSONプロパティ値をPythonでできる限り簡単に設定することはできません。私はJsonTextReaderとJsonTextWriterで遊んでいきます。 – klbass68