为什么JObject.Parse通过字符串在对象内部创建对象?

时间:2019-04-03 15:35:06

标签: 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创建动态对象,该对象是包装在对象中的对象?我希望编写代码来访问诸如responseMessage.Message as string之类的Message属性,但这会引发错误。

1 个答案:

答案 0 :(得分: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.NET?另外,由于值是as,因此无法使用null转换为字符串,因为它将返回JToken。您需要显式强制转换。