Почему JObject.Parse создает объект внутри объекта из строки?

#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 для проверки различных свойств, и это выдало бы мне сообщение об ошибке.