C# Json XmlDictionaryReader无法读取包含空格的值

C# Json XmlDictionaryReader无法读取包含空格的值,c#,json,C#,Json,我正试图用xmldialdictionaryreader读取一个json文件,该文件是用JsonReaderWriterFactory.CreateJsonReader创建的。只要值(字符串)不包含空格,它就可以正常工作。否则,我会得到一个奇怪的xmleexception告诉我名称不能包含空格 访问XElement.Value属性时引发异常,但真正奇怪的是属性值是可访问的,并且在调试器中显示了正确的值 这里发生了什么,这是JSON XmlDictionaryReader中的错误吗 JSON: C

我正试图用
xmldialdictionaryreader
读取一个json文件,该文件是用
JsonReaderWriterFactory.CreateJsonReader
创建的。只要值(字符串)不包含空格,它就可以正常工作。否则,我会得到一个奇怪的
xmleexception
告诉我名称不能包含空格

访问
XElement.Value
属性时引发异常,但真正奇怪的是属性值是可访问的,并且在调试器中显示了正确的值

这里发生了什么,这是JSON XmlDictionaryReader中的错误吗

JSON:

C#:


您的错误不在于读取器,而在于您如何存储值。这:

    var defaultValue = element.Name;
可以重写为

    XName defaultValue = element.Name;
因此,稍后您将尝试进行隐式转换。显式强制转换为:

defaultValue = (XName)"Hallo space"; 
…这就产生了例外。 所以解决办法很简单

    var defaultValue = element.Name.ToString();

你得到了什么异常?
XmlException
:名称不能包含“”(0x20)字符(粗略翻译)是的,我复制了你的代码,得到了异常。正如异常所说:
名称中不能包含“”字符,十六进制值0x20。
不能包含空格。但是名称中不包含空格,但在价值上,这应该是好的。如果您在抛出异常的行上设置断点,您将看到您可以访问并在调试器中看到正确的值,先生,您是一个救生员:-)
defaultValue = (XName)"Hallo space"; 
    var defaultValue = element.Name.ToString();