如何将JSON映射到C#对象
我在理解如何实现这一点上遇到了问题 基本上我们有一个API,用户发送一个JSON格式:(如果代码不完美,请原谅,但您理解) 好的,我不确定我是否得到了正确的JSON格式,但现在是我的问题 我有一个名为如何将JSON映射到C#对象,c#,asp.net,json,C#,Asp.net,Json,我在理解如何实现这一点上遇到了问题 基本上我们有一个API,用户发送一个JSON格式:(如果代码不完美,请原谅,但您理解) 好的,我不确定我是否得到了正确的JSON格式,但现在是我的问题 我有一个名为Profile的类,其中包含参数Name、Last和一个对象作为其成员之一,名为Client和property Date。 大概是这样的: public class Profile { public string Name {get; set;} public string
Profile
的类,其中包含参数Name、Last和一个对象作为其成员之一,名为Client和property 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库。它会自动将json映射到您的类型 样本:
public static T Deserialize<T>(string json)
{
Newtonsoft.Json.JsonSerializer s = new JsonSerializer();
return s.Deserialize<T>(new JsonTextReader(new StringReader(json)));
}
publicstatict反序列化(字符串json)
{
Newtonsoft.Json.JsonSerializer s=new-JsonSerializer();
返回s.Deserialize(新的JsonTextReader(新的StringReader(json));
}
还有一个NuGet包可用。您可以使用它将json字符串反序列化为(对类进行一些修改)
var yourObject=JsonConvert.DeserializeObject(jsonstring);
公共类根
{
公众简介[]简介;
}
公共班级简介
{
公共字符串名称{get;set;}
公共字符串Last{get;set;}
公共客户端{get;set;}
公共日期时间日期{get;set;}
}
公共类客户端
{
公共int客户ID;
公共字符串产品;
公共字符串消息;
}
完成了这项工作,但它使用更复杂的格式进行日期时间序列化 我知道的最简单的方法是使用newtonsoft的JSON.Net。
为了便于理解,我总是在C#中使用相同的名称创建匹配类。
那么反序列化它就更容易了。
例如,如果它是js中的一个对象数组,它将映射到C#中具有相同名称的对象列表。
至于日期和时间,有点棘手。
Id在服务器端执行客户端验证和Datetime.tryParse,它将处理破折号或斜线
var serializer = new JavaScriptSerializer();
List<abc> abcList = serializer.Deserialize<List<abc>>(PassedInJsonString);
var serializer=newJavaScriptSerializer();
List abcList=serializer.Deserialize(PassedInJsonString);
仅供参考,您也可以直接在VS中将其添加为Nuget包,这很舒服很酷,根类的作用是什么?如果有新手问题,请原谅:)因为您的配置文件
数组位于对象内部(json的根对象没有类似xml的名称)。我把它命名为Root,你可以选择你想要的任何名字want@Malice链接是我想要的。。。我把你的头发向后翻update@L.B为什么Json.Net中的“t”不是链接的一部分对您很重要?这违反了网络惯例,所以一定有很好的理由。这是某种内部笑话吗?
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;
}
var serializer = new JavaScriptSerializer();
List<abc> abcList = serializer.Deserialize<List<abc>>(PassedInJsonString);