を返す離れサブノードへのアクセス:、デルファイ/ SuperObject - 私は、サーバーから、次のJSONを持つNIL
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;
このコードで:
{
"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",
...
私は、この値にアクセスするには、次のコードを使用していますの値は内部ロジックによって
"OrderId": "457634",
"OrderNumber": "256176682",
"OrderItems": {
"OrderItem": {
"OrderItemId": "712893",
"ShopId": "14690930",
"OrderId": "457634",
...
、:私はシンプルLabel1.Caption := orderObj.AsString;
を使用している場合、それは私にこれを示しますは、このようなアクセスすることができます:それはnil
を返し、同じことがorderObj
のすべてのノードで発生orderObj['OrderItems.OrderItem'];
、私はOrderId
ように「簡単」の値にアクセスしようとすると、それはorderObj['OrderId'];
を使用して、最初の要素である...
したがって、orderObj.AsString
の値は変数に変換するためにアクセスすることはできません...
OrderItem
の値にアクセスする方法はありますか?
orderArray := orderObj.AsArray;
TJSONDB.JsonToClientDataSet(orderArray, cdsOrdersItems);
ありがとう:私の目標は、次のコードを使用してClientDataSetのにOrderItem
の値を変換です!あなたはこの言及ここ
使用するスーパーオブジェクトのバージョンはどのサイトですか?私は一度使用したバージョン(v.1.2)でいくつかのフィールドを導き出すことができないという点で多くの問題を抱えていました。そこで、私はxsuperobjectに切り替えました:[link](https://github.com/onryldz/x-superobject) –
@AndreRuebel、私はこの[link](https://github.com)からバージョン1.2を使用しています/ hgourvest/superobject)、私はxsuperobjectをテストし、結果を投稿します。 – Zero
はい、これも私が使用したものです。それは特別な条件の下で解析の問題があるようです。それはかなり前のことなので、問題があった正確な条件を思い出すことはできません。残念ながら、xsuperobjectを使用するようにコードを変更する必要があります。これは、アプローチが多少異なるためです。しかしそれはそれ以来私のために働く。 –