【问题标题】:How to Convert Json Object to C# Class Object如何将 Json 对象转换为 C# 类对象
【发布时间】:2019-03-08 07:31:59
【问题描述】:
{
    "users": [
        {
            "name": "User1",
            "email": "support@korewireless.com",
            "phone": "+12049987456",
            "status": "Active",
            "title": "Mr"
        },
        {
            "name": "User2",
            "email": "info@korewireless.com",
            "phone": "+12040147456",
            "status": "Active",
            "title": "Mr"
        },
        {
            "name": "User3",
            "email": "help@korewireless.com",
            "phone": "+12040787456",
            "status": "Active",
            "title": "Ms"
        }
    ]
}

尝试将此 json 对象转换为 List,但它只有空值

var a = JsonConvert.DeserializeObject<User>(jsonData);

如何将其解析为类对象?

【问题讨论】:

标签: .net json c#-4.0


【解决方案1】:

如果您想反序列化特定的 json 字符串,您需要定义一个包含用户列表的根对象。

例如:

public class ListRoot
{ 
    public List<User> users { get; set; }
}

public class User
{ 
    public string name { get; set; }
    public string phone { get; set; }
    public string email { get; set; }
    public string status { get; set; }
    public string title { get; set; }
}

现在你可以打电话了

var data = JsonConvert.DeserializeObject<ListRoot>(jsonData);
foreach (User u in data.users)
{
    Console.WriteLine($"User:name={u.name}, phone={u.phone}, email={u.email}");
}

当然,如果你可以控制 json 数据的产生,你可以有更简单的方法来准备这样的 json 数据

[
    {
        "name": "User1",
        "email": "support@korewireless.com",
        "phone": "+12049987456",
        "status": "Active",
        "title": "Mr"
    },
    {
        "name": "User2",
        "email": "info@korewireless.com",
        "phone": "+12040147456",
        "status": "Active",
        "title": "Mr"
    },
    {
        "name": "User3",
        "email": "help@korewireless.com",
        "phone": "+12040787456",
        "status": "Active",
        "title": "Ms"
    }
]

这使您能够直接调用

List<User> users = JsonConvert.DeserializeObject<List<User>>(jsonData);

【讨论】:

    【解决方案2】:

    您应该转换为对象列表,因为您的 json 是用户对象的枚举。 例如: var a = JsonConvert.DeserializeObject&lt;List&lt;User&gt;&gt;(jsonData);

    【讨论】:

    • 你用OP提出的json数据试过你的答案了吗?
    • Json 可以在 json2csharp.com 试用。其他认为是什么是用户类,因为我们没有代码。
    【解决方案3】:

    这取决于您的 User 课程。请提供代码。

    您的 json 看起来更像 List&lt;User&gt; 的表示。如果是这样,您必须通过 JsonConvert.DeserializeObject&lt;List&lt;User&gt;&gt;(json) 反序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      相关资源
      最近更新 更多