Я пытаюсь проверить, есть ли в json определенное свойство. На самом деле я могу сделать это следующим образом:Json вернулся с пробелом
var container = (JContainer)JsonConvert.DeserializeObject(responseText);
var x = container.ToString(Formatting.None);
var message = container["text"];
Теперь переменной responseText
возвращается как:
{[
{
"trace": {
"details": {
"data": "[29-02-2016 17:37:32.931751]",
"type": "[info]",
"text": "[Done.]"
},
"context": {
"context": [
[
{
"ID": "John Dillinger"
}
]
]
}
}
}
]}
в переменной x
я удалил пространство и конечный результат:
"[{\"trace\":{\"details\":{\"data\":\"[29-02-2016 17:37:32.931751]\",\"type\":\"[info]\",\"text\":\"[Done.]\"},\"context\":{\"context\":[[{\"ID\":\"John Dillinger\"}]]}}}]"
Теперь, если ключ не найден, я получаю null
:
if (message == null)
{
return responseText;
}
проблема заключается в том, что я выполняю условие на переменную message
, что проверить, если в container
(не отформатирован) есть свойство, проблема в том, что я получаю это исключение:
{ "Accessed Значения JArray с недопустимым значением ключа: \ "text \". Int32 Индекс массива ожидается. "}
, но если я заменю container
со вторым JSON с слэшем все работает хорошо. Теперь моя проблема заключается в том, что я не могу выполнить var message= x["text"];
потому x
является строкой. Так как я может удалить пробел в json и проверить, есть ли ключ text
?
Почему бы не просто прочитать его от 'container'? Я не понимаю, почему вам нужно удалить все пробелы перед чтением этого свойства? –
@JamesThorpe, потому что если я прочитаю из контейнера, я получаю: '{" Доступные значения JArray с недопустимым значением ключа: \ "text \". Индекс массива Int32 ожидается. "}' В частности кажется, что литье 'JContainer' добавляет пространство, которое сломал json. Вместо этого, если я вернусь к переменной образца, содержащей json, я получаю результат достижения, но мне нужно получить его из переменной, содержащей запрос. – Sandokan
Вы понимаете, что ничего не делаете? x - это место, где вы удаляете пробелы, но вы не используете его ни для чего ... – Gusman