Подход для разбора строки 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);

и так далее.

Другие вопросы по тегам