如何将JSON映射到C#对象
我有理解如何实现这一点的问题,基本上我们有一个API,用户发送格式的json :(请原谅代码,如果不完美,但你明白)
{"Profile": [{ "Name":"Joe", "Last :"Doe", "Client": { "ClientId":"1", "Product":"Apple", "Message":"Peter likes apples" }, "Date":"2012-02-14" }]}
好吧不确定我是否正确格式化了JSON,但现在这是我的问题,我有一个名为Profile
的类,参数名称为Last,一个对象作为其成员之一,名为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,然后将其映射到我的对象…任何“帮助”我理解的帮助将非常感激。
问候
您可以使用Json.Ne来反序列化您的json字符串(对您的类进行一些修改)
var yourObject = JsonConvert.DeserializeObject(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; }
您可以使用JSON库,例如免费的Newtonsoft.Json 。 它会自动将json映射到您的类型。
样品:
public static T Deserialize(string json) { Newtonsoft.Json.JsonSerializer s = new JsonSerializer(); return s.Deserialize (new JsonTextReader(new StringReader(json))); }
还有一个NuGet包。
我知道最简单的方法是使用newtonsoft的JSON.Net。 为了便于理解,我总是在C#中使用相同的名称进行匹配的类。 然后它更容易反序列化。 例如,如果它是js中的对象数组,它将映射到C#中具有相同名称的对象列表。 至于约会时间,它有点棘手。 我在服务器端执行客户端validation和Datetime.tryParse,它会处理破折号或斜杠。
var serializer = new JavaScriptSerializer(); List abcList = serializer.Deserialize>(PassedInJsonString);
DataContractJsonSerializer完成这项工作,但它使用更复杂的格式进行DateTime序列化。
- 将位图转换为ASP.NET的图像
- ASP.NET MVC3和Facebook集成
- ASP.NET 5 EntityFramework.Core 7.0.0-rc1-final issue – 编译器想要引用7.0.0.0,但未找到
- 如何使用Stream获取图像大小(wxh)
- 有没有办法强制NHTMLUNIT忽略页面JavaScript错误和继续脚本执行?
- C#ASP.NET页面离开事件?
- 在sitecore中将数据从一个子布局发送到另一个子布局
- 如何在runAllManagedModulesForAllRequests设置为true的情况下为IIS 7中的flv文件禁用gzip压缩?
- 从ASP代码后面将参数传递给Javascript函数