当属性存在时,JSON.net 找不到属性值

本文关键字:属性 net 找不到 JSON 存在 | 更新日期: 2023-09-27 18:17:38

我正在使用 Json.net,我从网页中检索了以下JSON:

"{'"Response'":
    [{
    '"iconPath'":'"",
    '"membershipType'":1,
    '"membershipId'":'"124877458474'",
    '"displayName'":'"DarylJG'"
    }],
    '"ErrorCode'":1,
    '"ThrottleSeconds'":0,
    '"ErrorStatus'":'"Success'",
    '"Message'":'"Ok'",
    '"MessageData'":{ }}"

现在,尝试从此属性返回字符串时出现以下错误:

类型的未处理异常 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' 发生在 系统核心.dll

附加信息:"Newtonsoft.Json.Linq.JArray"不包含 "图标路径"的定义

图标路径确实存在于此 JSON 文件中。我正在使用的代码:

var response = client.GetAsync("CorrectServerPath & Auth").Result;
var content = response.Content.ReadAsStringAsync().Result;
dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(content);

return item.Response.iconPath;

这是引发此错误的代码行,但以下代码:

return item.Message;

将返回确定

所以我的总体问题是,如何使用 JSON.net 在提供的 json 文件中访问 iconPath?因为,我不知所措。研究材料一无所获,可能使用了不正确的搜索词

当属性存在时,JSON.net 找不到属性值

您的Response成员是一个数组,而不是一个对象。请改用item.Response[0].iconPath