-1
你好,我得到一個JSON格式的網絡API下一結果JSON請求的特定值:閱讀使用超對象
[
{
"$id":"47",
"CodISO":"BIH",
"ES":"Bosnia y Herzegovina",
"EN":"Bosnia and Herzegovina"
},
{
"$id":"48",
"CodISO":"BLR",
"ES":"Bielorrusia",
"EN":"Belarus"
},
{
"$id":"49",
"CodISO":"BLZ",
"ES":"Belice",
"EN":"Belize"
},
{
"$id":"50",
"CodISO":"BOL",
"ES":"Bolivia",
"EN":"Bolivia"
},
{
"$id":"51",
"CodISO":"BON",
"ES":"Bonaire",
"EN":"Bonaire"
},
{
"$id":"52",
"CodISO":"BOT",
"ES":"Botsuana",
"EN":"Botswana"
},
{
"$id":"53",
"CodISO":"BRA",
"ES":"Brasil",
"EN":"Brazil"
},
{
"$id":"54",
"CodISO":"BRB",
"ES":"Barbados",
"EN":"Barbados"
}
]
現在,我想讀項的值「ES」,其中的價值在Delphi SuperObject中,項目'CodISO'='BOL',我無法找到解決方案,花了一整天的時間嘗試它。
我不知道如何使用SuperObject元素迭代,因爲我使用Embarcadero TJSONValue
,TJSONObject
,TJSONArray
。我是一個新手與超對象:
var
json: ISuperObject;
Retriever: TIdHTTP;
Url: string;
AnsiStr: AnsiString;
begin
URL := Form1.RestClient1.BaseURL;
try
Retriever := TIdHTTP.Create(nil);
try
AnsiStr := Retriever.Get(Url);
json := SO(AnsiStr);
{ Here code to iterate with json elements in SuperObject.......
.
.
.
.
}
finally
Retriever.Free;
end;
except
on E: Exception do
ShowMessage(E.ClassName + ': ' + E.Message);
end;
End;
「我無法找到解決辦法,採取了一整天它」 - 你究竟什麼嘗試?請顯示你的代碼。如果你真的看SuperObject的可用API,這應該不會超過幾分鐘。 JSON沒有任何類似於XML的XPath,因此您必須手動迭代這些項目。從根數組開始,根據需要循環訪問數組的項目,每次讀取它們的「CodISO」和「ES」字段,然後在找到匹配項時斷開循環。就那麼簡單。 – 2014-11-23 23:38:17
你看看超級對象的[readme.html](https://superobject.googlecode.com/git/readme.html)嗎?這是自述文件的意圖,您應該閱讀以獲取更多信息 – 2014-11-24 00:28:47