2016-10-04 4 views
0

は、私はC++/CLIC++/CLIクラスとのIList

[ 
    { 
     "id":"046e075ad92684", 
     "NfcA":{ 
      "maxTransceiveLength":253, 
      "sak":0, 
      "atqa":"4400", 
      "timeout":618 
     }, 
     "Ndef":[ 
      { 
       "records":[ 
        { 
         "id":"", 
         "tnf":1, 
         "type":"54", 
         "payload":"02656e48656c6c6f206d792041737365742049442069733a20303030303031" 
        } 
       ] 
      } 
     ], 
     "tech":[ 
      "android.nfc.tech.NfcA", 
      "android.nfc.tech.MifareUltralight", 
      "android.nfc.tech.Ndef" 
     ], 
     "time":1472468356002 
    } 
] 

を使用して、次のJSONをデシリアライズしようとしている私はすでにJSONデータの内容を取得するために、次のクラスを宣言しました。

ref class tech { 
    public: String^ tech1; 
    public: String^ tech2; 
    public: String^ tech3; 
}; 

ref class Record { 
    public: String^ id; 
    public: int tnf; 
    public: String^ type; 
    public: String^ payload; 
}; 

ref class Topic_nfc { 
    public: String^ id; 
    public: ref class NfcA { 
    public: int maxTransceiveLength; 
    public: int sak; 
    public: int atqa; 
    public: int timeout; 
    }; 
    public: ref class Ndef { 
    public: System::Collections::Generic::IList<Record^>^ records; 
    }; 
    public: System::Collections::Generic::IList<Ndef^>^ Ndef; 
    public: System::Collections::Generic::IList<String^>^ tech; 
    public: unsigned long long time; 

    public: 
    NfcA^ NfcA; 
}; 

直列化復元した後、私は通常、MyRawdataしかし

System::Collections::Generic::IList<Topic_nfc^>^ MyRawdata = JsonConvert::DeserializeObject<System::Collections::Generic::IList<Topic_nfc^>^>(MyJson); 

由来

printf("MyRawdata[i]->id : %s\n", MyRawdata[i]->id); 
printf("MyRawdata[i]->NfcA->maxTransceiveLength : %d\n", MyRawdata[i]->NfcA->maxTransceiveLength); 

を使用してidとmaxTransceiveLengthにアクセスすることができ、私たちはNdeftechデータにアクセスできる方法を見つけ出すことはできません会員は​​です。 IListに相当するのはどれですか?

はあなたに@Lucas Trzesniewskiヘルプへ

+0

'IList'の代わりに' List'を使うと、Json.NETはインターフェイスに逆シリアル化するためにどの具体的なクラスを使うべきか分かりません。 –

+0

IListではなくListを使用していても、これらのデータにアクセスするコードはどちらになっているかはわかりません。 tech1データを取得するには、 'printf(" MyRawdata [i] - > id:%s \ n "、MyRawdata [i] - > id);のequivelantになりますか?私は少し混乱している。 – Fotakis

+0

私は問題が「IList」だとは思わない。 Visual Studioでブレークポイントを設定することで、VSのユーザーインターフェースを介して 'tech1'の値を評価することができ、値は正しいので、' JsonConvert'を使って適切に設定します。問題は、コードでこれらのデータにアクセスするMyRawdata構造をどのように参照できるかです。 – Fotakis

答えて

0

感謝をありがとう、私はこれらのリストには、次のコードを使用してアクセスすることができると結論づけました。

for (int k = 0 ; k < MyRawdata[i]->Ndef->Count ; k++) { 
    printf("MyRawdata[i]->Ndef[k]->records[k]->payload : %s\n", MyRawdata[i]->Ndef[k]->records[k]->payload); 
} 

for (int k = 0 ; k < MyRawdata[i]->tech->Count ; k++) { 
    printf("MyRawdata[i]->tech[k] : %s\n", MyRawdata[i]->tech[k]); 
} 

実際には、それぞれのクラスのデータにアクセスするのは構文上の問題でした。

関連する問題