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();