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

时间:2015-10-14 00:46:05

标签: c# linq json.net

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

"{\"Response\":
    [{
    \"iconPath\":\"",
    \"membershipType\":1,
    \"membershipId\":\"124877458474\",
    \"displayName\":\"DarylJG\"
    }],

    \"ErrorCode\":1,
    \"ThrottleSeconds\":0,
    \"ErrorStatus\":\"Success\",
    \"Message\":\"Ok\",
    \"MessageData\":{ }}"

现在,我在尝试从此属性返回一个字符串时收到以下错误:

  

未处理的类型异常   发生了'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'   System.Core.dll

     

其他信息:'Newtonsoft.Json.Linq.JArray'不包含   'iconPath'的定义

此JSON文件中存在iconPath。我正在使用的代码:

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 ?因为,我不知所措。研究材料没有提出任何问题。可能使用不正确的搜索字词

1 个答案:

答案 0 :(得分:2)

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