gpt4 book ai didi

c# - 使用 Newtonsoft 和 C# 反序列化嵌套的 JSON

转载 作者:行者123 更新时间:2023-11-30 20:05:21 25 4
gpt4 key购买 nike

我正在尝试从 Rest API 解析 Json 响应。我可以得到很好的响应并创建了一些类模型。我正在使用 Newtonsoft 的 Json.Net。

我的响应中不断出现空值,我不确定我的模型设置是否正确或遗漏了什么?

例如,我想要获取的是 Data\Items\Employee 中的 Firstname 和 ReferenceNumber

我的 Json 响应示例是:

{
"Data": {
"Links": [
{
"Rel": "parent",
"Href": "http://Api/url/",
"Title": "Api",
}
],
"Items": [
{
"Employee": {
"ReferenceNumber": "0078952",
"EmployeeStatus": {
"Name": "Active",
"Value": 2
},
"ContactByPost": true,
"ContactByMarketingEmails": true,
"ClientDetails": [
{
"LimitedCompany": {
"Id": "809f4455-673d-df11-9849-00155d072900",
"Name": "Company"
},
"ClientCompany": {
"Id": "62494f0c-617d-412f-81a3-ca40ef80f774",
"Name": "Company 2"
},
"Code": "G67D",
"RefCode": "1271",
"Date": "\/Date(1333456265000+0100)\/",
"Id": "009ea227-887d-e111-96ec-000c29128cee",
"CreatedOn": "\/Date(1333455954000+0100)\/",
"CreatedBy": {
"Id": "5c2cb5eb-7368-e111-96eb-000c29128cee",
"Name": "System Administrator"
},
"Archived": false
}
],
"Title": {
"Name": "Mr",
"Value": 1
},
"FirstName": "Fred",
"MiddleName": null,
"LastName": "Flintstone",
"KnownAs": null,
"DateOfBirth": "\/Date(315576000000+0000)\/",
"Gender": {
"Name": "Male",
"Value": 1
},
"HomePhoneNumber": "55555555555",
"MobilePhoneNumber": null,
"Addresses": null,
"EmailAddresses": null,
"Id": "009ea227-887d-e111-96ec-000c29128cee",
"CreatedOn": "\/Date(1333455954000+0100)\/",
"CreatedBy": {
"Id": "5c2cb5eb-7368-e111-96eb-000c29128cee",
"Name": "System Administrator"
},
"Archived": false
},
"Links": [
{
"Rel": "list",
"Href": "http://Api/Addresses",
"Title": "Addresses",
"Description": "Get a list of addresses for this Employee."
}
]
}
]
}
}

我的模型设置如下所示:

public class Data
{
public Collection<Links> Links { get; set; }
public Collection<Items> Items { get; set; }
}
public class Items
{
public Employee Employee { get; set; }
}
public class Employee
{
public string ReferenceNumber { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Id { get; set; }
}
public class Links
{
public string Rel { get; set; }
public string Href { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}

在我的 Controller 中,我正在执行以下操作:

Data data = Newtonsoft.Json.JsonConvert.DeserializeObject<Data>(APIResponse);

我在调试时看到的只是 Items 和 Links 都是空的。我不太确定我做错了什么或者我如何让它工作以便我可以访问我的 C# 代码中的值?任何帮助,将不胜感激。该应用程序是 MVC3。我看到的示例使用的是简单的 json 结构。

最佳答案

从反序列化器的角度来看,JSON 字符串不适合数据类。它看到一个具有名为“Data”的单个属性的根对象,而它期望看到一个具有“Items”和“links”属性的对象。所以它只是构造一个 Data 实例,并将其属性保留为 null。

要修复它,请移除包装对象,这样您就剩下以下内容:{ “项目”:[..],“链接”:[...]

然后再次尝试反序列化。

关于c# - 使用 Newtonsoft 和 C# 反序列化嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11520378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com