私は JSON が初めてで、JSON を解析し、その内容の一部を ListView に表示する必要があるこのプロジェクトを手にしています。問題は、これまでに読んだドキュメントでは JSON 配列を含む JSON オブジェクトを扱っていたのに対し、私のケースではネストされたオブジェクトを扱っていたことです。話を短くするために、ここに要約があります: DBXJSON で Delphi XE2 を使用しています。いくつかの値をサーバーに送信すると、次のような JSON オブジェクトが返されます。
{
"products": {
"Men's Sneakers": {
"instock": false,
"size": "423",
"manufacturer": "Adidas",
"lastcheck": "20120529"
},
"Purse": {
"instock": true,
"size": "not applicable",
"manufacturer": "Prada",
"lastcheck": "20120528"
},
"Men's Hood": {
"instock": false,
"size": "M",
"manufacturer": "Generic",
"lastcheck": "20120529"
}
},
"total": 41,
"available": 30
}
私が達成したかったのは、各アイテム (つまり財布) を解析し、1 つのサブアイテム (製造元) と共にリストビューのキャプションとして追加することでした。JSON 文字列を引数として取り、JSON オブジェクトを作成するプロシージャを作成しましたが、ネストされたオブジェクトをさらに解析する方法がわかりません。
procedure TForm1.ParseString(const AString: string);
var
json : TJSONObject;
jPair : TJSONPair;
jValue : TJSONValue;
jcValue : TJSONValue;
l,i : Integer;
begin
json := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(AString),0) as TJSONObject;
try
//get the pair to evaluate in this case the index is 1
jPair := json.Get(1);
{further process the nested objects and adding them to the listview}
finally
json.Free;
end;
end;
どんな提案でも大歓迎です。Delphi で JSON のインとアウトを取得しようとしてかなりの時間を無駄にしました。
ありがとう、スフィンクス