gpt4 book ai didi

c# - 在 C# 中反序列化嵌套数组 JSON 返回空值

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:58 25 4
gpt4 key购买 nike

当我使用 newtonSoft JSON 反序列化 JSON 时,我得到返回的空值。这是我的 JSON:

        {"odata.metadata":"https://graph.abc.com/testapi",
"value":
[{"capabilityStatus":"Enabled",
"consumedUnits":2,
"objectId":"c9992e5ef110_6fd2c87-1e91e994b900",
"prepaidUnits":{"enabled":25,"suspended":0,"warning":0},
"servicePlans":
[{"servicePlanId":"4ccb","servicePlanName":"YAMMER_ENTERPRISE"},
{"servicePlanId":"bea4","servicePlanName":"RMS_S_ENTERPRISE"},
{"servicePlanId":"43de","servicePlanName":"OFFICESUBSCRIPTION"},
{"servicePlanId":"0fea","servicePlanName":"MCOSTANDARD"},
{"servicePlanId":"e95be","servicePlanName":"SHAREPOINTWAC"},
{"servicePlanId":"5dbe","servicePlanName":"SHAREPOINTENTERPRISE"},
{"servicePlanId":"efb8","servicePlanName":"EXCHANGE_S_ENTERPRISE"}],
"skuId":"42f0-b197",
"skuPartNumber":"ENTERPRISEPACK"}]}

这是我的类(class):

    public class PrepaidUnits
{
public int enabled { get; set; }
public int suspended { get; set; }
public int warning { get; set; }
}

public class ServicePlan
{
public string servicePlanId { get; set; }
public string servicePlanName { get; set; }
}

public class Value
{
public string capabilityStatus { get; set; }
public int consumedUnits { get; set; }
public string objectId { get; set; }
public PrepaidUnits prepaidUnits { get; set; }
public List<ServicePlan> servicePlans { get; set; }
public string skuId { get; set; }
public string skuPartNumber { get; set; }
}

public class Graphdata
{
public string odata_metadata { get; set; }
public List<Value> value { get; set; }
}

这就是问题所在,当我使用以下语句反序列化时,我得到了 servicePlanId 和 servicePlanName 的返回空值。我在这里做错了什么?

        var graphAPIDataDeserialized = JsonConvert.DeserializeObject<ServicePlan>(graphResult);  

但是,当我使用 Graphdata 类时,我可以看到 JSON 响应中的所有值:

       var graphAPIDataDeserialized = JsonConvert.DeserializeObject<Graphdata>(graphResult);  

预先感谢您的帮助!

最佳答案

这是任何 JSON 解析器的预期行为。你给它的字符串应该代表你想从中得到的对象,所以当你说:

JsonConvert.DeserializeObject<ServicePlan>(graphResult)

...您指示它将图形结果 反序列化为ServicePlan 对象。它创建一个 ServicePlan,查看您给它的对象(“图形结果”),没有找到名为 servicePlanId 的属性等,因此它不会在这些属性上设置任何值。

如果您尝试创建一个 ServicePlan,您需要向它传递一个更像 {"servicePlanId":"4ccb","servicePlanName":"YAMMER_ENTERPRISE"} 的字符串值

另一方面,如果您试图从反序列化图形结果中获取 ServicePlans,您可以说:

JsonConvert.DeserializeObject<Graphdata>(text).value[0].servicePlans

关于c# - 在 C# 中反序列化嵌套数组 JSON 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818693/

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