Подтвердить что ты не робот

Как сопоставить объекты JSON с С#

У меня возникают проблемы с пониманием того, как это сделать, в основном у нас есть API, пользователь отправляет json формата: (извините код, если он не идеален, но вы понимаете)

{"Profile": [{
            "Name":"Joe",
            "Last :"Doe",
             "Client":
                     {
                      "ClientId":"1",
                      "Product":"Apple",
                      "Message":"Peter likes apples"
                      },
              "Date":"2012-02-14"
             }]}

Не уверен, что если я правильно отформатировал JSON, но теперь вот моя проблема, у меня есть класс под названием Profile с параметрами Name, Last и object как один из его членов, называемый Client, а также свойство Date.

Что-то вроде этого:

public class Profile
  {
     public string Name {get; set;}
     public string Last {get; set;}
     public Client client {get; set;}
     public DateTime dDate {get; set;}   
  }

Итак, в основном, я не уверен, как захватить JSON, а затем сопоставить его с моим объектом... Любая помощь с "помогающим" мне понять будет очень оценена.

Привет

4b9b3361

Ответ 1

Вы можете использовать Json.Ne t для десериализации вашей строки json как (с некоторыми изменениями в ваших классах)

var yourObject =  JsonConvert.DeserializeObject<Root>(jsonstring);


public class Root
{
    public Profile[] Profile;
}

public class Profile
{
    public string Name { get; set; }
    public string Last { get; set; }
    public Client Client { get; set; }
    public DateTime Date { get; set; }
}

public class Client
{
    public int ClientId;
    public string Product;
    public string Message;
}

Ответ 2

Для этого вы можете использовать библиотеку JSON, например JSON.NET, которая является бесплатной. Он автоматически сопоставит json с вашими типами.

Пример:

    public static T Deserialize(string json)
    {
        Newtonsoft.Json.JsonSerializer s = new JsonSerializer();
        return s.Deserialize<T>(new JsonTextReader(new StringReader(json)));
    }

Ответ 3

DataContractJsonSerializer выполняет эту работу, но использует более сложный формат для сериализации DateTime.