#c# #json.net
#c# #json.net
Вопрос:
У меня есть строковое значение:
var responseString = {"ErrorType":"ServerError","Message":"Incoming data error.","Properties":null}
Когда я вызываю JObject.Parse(responseString);
, я получаю следующий динамический объект:
{{
"ErrorType": "ServerError",
"Message": "Incoming data error.",
"Properties": null
}}
Почему JObject создает динамический объект, который является объектом, обернутым в объект? Я надеялся написать код для доступа к свойству Message, такому как responseMessage.Message as string
, но это выдает ошибку.
Ответ №1:
Я только что попробовал следующий код в LINQPad:
var responseString = "{"ErrorType":"ServerError","Message":"Incoming data error.","Properties":null}";
dynamic responseMessage = JObject.Parse(responseString);
var msg = (string) responseMessage.Message;
msg.Dump();
На выходе я получаю желаемую Incoming data error.
строку, поэтому похоже, что она делает то, что должна. Как выглядит ваш код? И какая версия Json.СЕТЬ, которую вы используете? Кроме того, его невозможно использовать as
для преобразования в строку, так как это вернет null
значение JToken
. Вам нужно явное приведение.
Комментарии:
1. Спасибо за дополнительное объяснение… это помогло точно сузить круг моих проблем. Я использовал
as
. И затем, когда это не работало корректно, я попытался использовать окно просмотра VS для проверки различных свойств, и это выдало бы мне сообщение об ошибке.