Mar*_*ius 5 c# xml json json.net expandoobject
我可以毫无问题地从 Expandoobject 获取元素内部文本。我不知道如何获取属性的值。
通过这样做Console.WriteLine(obj.Message.Body)
,我可以在 body 元素中获取预期的字符串。
private void TestXML()
{
string xmlString = @"<?xml version=""1.0"" encoding=""utf-8""?><Message important=""yes"" recevied=""2019-2-12""><Body>Hi there fella!</Body></Message>";
XDocument doc = XDocument.Parse(xmlString);
string json = JsonConvert.SerializeXNode(doc);
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json);
Console.WriteLine(obj.Message);
}
Run Code Online (Sandbox Code Playgroud)
我进行了调试,在下面obj.Message
我可以看到 3 个字段:
有没有办法检索带有 @ 前缀的前 2 个字段的值?我不知道如何在动态对象上处理这个@字符。
要处理特殊字符,例如动态对象中的“@”,必须将其强制转换为 ` ( IDictionary )。然后你可以得到接收到的属性,如下所示:
var received = ((IDictionary<string, object>)obj.Message)["@recevied"];
Run Code Online (Sandbox Code Playgroud)