2015-10-14 2 views
1

Я работаю с Json.NET, я извлек следующий JSON из веб-страницы:JSON.net не находя значение свойства при свойство существует

"{\"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

которого на IconPath действительно существует в этом файле 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; 

вернется OK

Так что мой общий вопрос, как я могу достичь iconPath в предоставленном json-файле с помощью JSON.net? Как, я в недоумении. Исследовательский материал придумал ничего & Возможно, используя неправильные условия поиска

+3

Ваш элемент 'Response' - это массив, а не объект. Попробуйте 'item.Response [0] .iconPath' –

+0

@CollinDauphinee Это огромный надзор. Вы предпочли бы, чтобы это ответ, чтобы я мог принять соответственно? Ваша рекомендация решила проблему –

ответ

2

Ваш Response member - это массив, а не объект. Вместо этого используйте item.Response[0].iconPath.

Смежные вопросы