サーバーから次の JSON があります。
{
"SuccessResponse": {
"Head": {
"RequestId": "",
"RequestAction": "GetMultipleOrderItems",
"ResponseType": "Orders",
"Timestamp": "2016-05-10T15:13:06-0300"
},
"Body": {
"Orders": {
"Order": [
{
"OrderId": "457634",
"OrderNumber": "256176682",
"OrderItems": {
"OrderItem": {
"OrderItemId": "712893",
"ShopId": "14690930",
"OrderId": "457634",
...
この値にアクセスするには、次のコードを使用しています。
procedure TForm1.GetOrdersPendingItems;
var
mydata : string;
obj, orderObj: ISuperObject;
orderArray: TSuperArray;
begin
mydata := GetURLAsString(GenerateApiUrl('GetMultipleOrderItems', 'OrderIdList', '[457634,457817]'));
obj := SO(mydata);
orderObj := obj['SuccessResponse.Body.Orders.Order'];
end;
このコードで単純な を使用するとLabel1.Caption := orderObj.AsString;
、次のように表示されます。
"OrderId": "457634",
"OrderNumber": "256176682",
"OrderItems": {
"OrderItem": {
"OrderItemId": "712893",
"ShopId": "14690930",
"OrderId": "457634",
...
ロジックにより、 の内部の値は次のOrderItem
ようにアクセスできます: 、しかし、最初の要素である のorderObj['OrderItems.OrderItem'];
ような「簡単な」値にアクセスしようとすると、それを使用して返され、 ...のすべてのノードで同じことが起こります。OrderId
orderObj['OrderId'];
nil
orderObj
したがって、の値にorderObj.AsString
アクセスして変数に変換することはできません...
OrderItem
?の内部の値にアクセスする方法があります。私の目的はOrderItem
、次のコードを使用しての値を ClientDataSet に変換することです。
orderArray := orderObj.AsArray;
TJSONDB.JsonToClientDataSet(orderArray, cdsOrdersItems);
ありがとう!