Подход для разбора строки JSON с различными типами объектов
У меня есть следующая строка JSON
{
"serverTime": "2013-08-12 02:45:55,558",
"data": [{
"key1": 1,
"result": {
"sample1": [""],
"sample2": "test2"
}
},{
"key1": 1,
"result": {
"sample3": [""],
"sample4": "test2"
}
}]
}
Использование JSONTOC#
Следующие классы генерируются.
public class Result
{
public List<string> sample1 { get; set; }
public string sample2 { get; set; }
public List<string> sample3 { get; set; }
public string sample4 { get; set; }
}
public class Datum
{
public int key1 { get; set; }
public Result result { get; set; }
}
public class RootObject
{
public string serverTime { get; set; }
public List<Datum> data { get; set; }
}
Как видно, инструмент сгенерировал класс Result со всеми возможными свойствами.
Я пытаюсь следовать подходу, чтобы разобрать JSON
public class Response<T>
{
public Date serverTime;
public ResponseData<T>[] data;
}
public class ResponseDataBase
{
public int key1;
}
public class ResponseData<T> : ResponseDataBase
{
public T result;
}
Здесь могут быть следующие два класса
Class Result1
{
public List<string> sample1 { get; set; }
public string sample2 { get; set; }
}
Class Result2
{
public List<string> sample3 { get; set; }
public string sample4 { get; set; }
}
У меня есть эти объявления класса в качестве ссылки, определение класса может быть совершенно другим.
** Как я могу проанализировать этот JSON, указав тип результата.** Я использую JSONFx.net для десериализации обратно к объектам.
Спасибо
1 ответ
Классы, сгенерированные из ваших данных JSON:
public class Result
{
public List<string> sample1 { get; set; }
public string sample2 { get; set; }
}
public class Datum
{
public int key { get; set; }
public Result result { get; set; }
}
public class RootObject
{
public string serverTime { get; set; }
public List<Datum> data { get; set; }
}
Пользователь Newtonsoft.Json dll для десериализации данных JSON, таких как:
var obj = JsonConvert.DeserializeObject<RootObject>("yourjsonstring");
тогда вы можете использовать свойства obj, такие как:
var date = DateTime.Parse(obj.serverTime);
и так далее.