Я пытаюсь десериализации JSON, используя следующий C++/CLIклассы C++/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.
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;
};
После десериализации я могу получить доступ к идентификатору и maxTransceiveLength обычно используя
printf("MyRawdata[i]->id : %s\n", MyRawdata[i]->id);
printf("MyRawdata[i]->NfcA->maxTransceiveLength : %d\n", MyRawdata[i]->NfcA->maxTransceiveLength);
где MyRawdata
производный от
System::Collections::Generic::IList<Topic_nfc^>^ MyRawdata = JsonConvert::DeserializeObject<System::Collections::Generic::IList<Topic_nfc^>^>(MyJson);
Однако, я не могу понять, как мы можем получить доступ Ndef
и tech
данные таких как payload
. Можете ли вы указать, что является эквивалентом для IList?
Спасибо
Используйте 'List' вместо' IList', Json.NET не знает, какой конкретный класс он должен использовать для десериализации интерфейса. –
Даже используя List вместо IList, мне не ясно, какой код для доступа к этим данным. Который был бы равнозначен 'printf (« MyRawdata [i] -> id:% s \ n ", MyRawdata [i] -> id);' для получения данных tech1? Это немного сбивает меня с толку. – Fotakis
Я не думаю, что проблема - это 'IList'. Установив точки останова в Visual Studio, я могу оценить значения 'tech1' через пользовательский интерфейс VS и правильные значения, поэтому они хорошо установлены с помощью' JsonConvert'. Вопрос в том, как я могу ссылаться на структуру MyRawdata для доступа к этим данным с кодом? – Fotakis