Я вижу много простых примеров JSON DeSerialization, но когда дело касается чего-то более сложного, здесь не хватает примеров.
Я смотрю на десериализацию Ответов от API GetResponse:
Простой например
{
"result" : {
"updated" : "1"
},
"error" : null
}
Другой:
{
"result" : null,
"error" : "Missing campaign"
}
Вот еще один более сложный потенциалответ:
{
"result" : {
"CAMPAIGN_ID" : { // <-- This value will be different for each Campaign
"name" : "my_campaign_1",
"from_name" : "My From Name",
"from_email" : "me@emailaddress.com",
"reply_to_email" : "replies@emailaddress.com",
"created_on" : "2010-01-01 00:00:00"
}
},
"error" : null
}
И, наконец, как должен выглядеть мой объект?
Сначала я просто играл что-то подобное ...
private struct GenericResult {
public string error;
public Dictionary<string, object> result;
}
Это будет работать для всех моих ответов, но затем, чтобы получить доступ к свойствам объекта, мне придется его разыграть, если я не ошибаюсь.
Я хочу использовать его следующим образом:
JavaScriptSerializer jss = new JavaScriptSerializer();
var r = jss.Deserialize<GenericResult>(response_string);
// or... if I'm going to use a non-Generic object
var r = jss.Deserialize<GetCampaignResult>(response_string);
РЕДАКТИРОВАТЬ
После получения данных, фактическая структура имеет одну заминку.Вот фактический пример:
Значение
{
"error":null,
"result":
{"ABQz": { // <-- As you can see, this is NOT a class name.
"from_email" : "from@email.com",
"created_on" : "2010-10-15 12:40:00",
"name" : "test_new_subscribers",
"from_name" : "John Smith",
"reply_to_email": "from@email.com"
}
}
}
Теперь, когда я не знаю, каким будет это значение, я в тупике.Я хотел бы включить это значение в качестве идентификатора для Campaign
объекта.