如何将JSON映射到C#对象

use*_*502 23 c# asp.net json

我在理解如何实现这一目标时遇到了问题.

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

{"Profile": [{
    "Name":"Joe",
    "Last :"Doe",
    "Client":
    {
        "ClientId":"1",
        "Product":"Apple",
        "Message":"Peter likes apples"
    },
    "Date":"2012-02-14",
}]}
Run Code Online (Sandbox Code Playgroud)

好吧我不确定我是否正确格式化了JSON,但现在这是我的问题.

我有一个名为Profile参数Name,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;}   
  }
Run Code Online (Sandbox Code Playgroud)

所以基本上,我不知道如何抓住JSON然后将其映射到我的对象.

任何帮助我理解的帮助都会非常感激.

L.B*_*L.B 42

您可以使用Json.NET反序列化您的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;
}
Run Code Online (Sandbox Code Playgroud)

  • @LB为什么Json.Net中的"t"不是链接的一部分对你很重要?那是违反网络惯例的,所以必须有充分的理由.这是某种内幕笑话吗? (3认同)
  • 太好了,Root类的作用是什么?如果出现新手问题,抱歉:) (2认同)

Mar*_*rek 7

您可以使用JSON库,例如免费的Newtonsoft.Json.它会自动将json映射到您的类型.

样品:

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

还有一个NuGet包.