如何将JSON映射到C#对象

如何将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

我在理解如何实现这一点上遇到了问题

基本上我们有一个API,用户发送一个JSON格式:(如果代码不完美,请原谅,但您理解)

好的,我不确定我是否得到了正确的JSON格式,但现在是我的问题

我有一个名为
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);