我的 Delphi 應用程式呼叫 REST API,它生成以下 JSON:
{
"status": "success",
"message": "More details",
"data": {
"filestring": "long string with data",
"correct": [
{
"record": "Lorem ipsum",
"code": 0,
"errors": []
}
],
"incorrect": [
{
"record": "Lorem ipsum",
"code": 2,
"errors": [
"First error",
"Second error"
]
}
],
}
}
我現在想處理資料,但我無法接收存盤在該data部分中的資訊。目前我正在嘗試接收如下資料:
var
vResponse : TJSONObject;
vData : TJSONObject;
begin
// .. do other stuff ..
vResponse := // call to REST API (Returns a valid TJSONObject I've wrote it into a file)
vData := vResponse.get('data'); // throws error
end;
但這會導致以下錯誤:
不兼容的型別:TJSONObject 和 TJSONPair
有誰知道我怎么能做到這一點?
uj5u.com熱心網友回復:
TJSONObject.Get()回傳 a TJSONPair,而不是 a TJSONObject。您將不得不:
使用
TJSONPair.JsonValue屬性:var vResponse : TJSONObject; vData : TJSONObject; begin // .. do other stuff .. vResponse := // call to REST API (Returns a valid TJSONObject I've wrote it into a file) vData := vResponse.Get('data').JsonValue as TJSONObject; end;使用該
TJSONObject.GetValue()方法,它只回傳JsonValue找到的TJSONPair:var vResponse : TJSONObject; vData : TJSONObject; begin // .. do other stuff .. vResponse := // call to REST API (Returns a valid TJSONObject I've wrote it into a file) vData := vResponse.GetValue('data') as TJSONObject; end;
uj5u.com熱心網友回復:
不兼容的型別:TJSONObject 和 TJSONPair
錯誤資訊是自我解釋的:vData被宣告為TJSONObject,這意味著Get函式的回傳型別是TJSONPair。
要修復此類錯誤,您需要更改結果變數的宣告。在這種情況下,這意味著宣告vData為TJSONPair.
但是,如果您對獲得一對不感興趣,而是相反TJSONObject,則需要使用其他方式來檢索它。比如Values房產。因為如果您知道該值是一個物件,則需要將其型別轉換為Values回傳。TJSONValueTJSONObject
vData := vResponse.Values['data'] as TJSONObject;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/433785.html
標籤:德尔福
