Как сопоставить объекты 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, а затем сопоставить его с моим объектом... Любая помощь с "помогающим" мне понять будет очень оценена.
Привет
Ответы
Ответ 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.