我的源JSON文件有:在下面提到的密钥中"Dimension 4 : 4 : 4" : "4k TV"
我的JSON到XML转换器失败,因为这是不允许的,并引发此异常System.Xml.XmlException: The ':' character, hexadecimal value 0x3A, cannot be included in a name.
如何将此JSON转换为有效的XML文件?
我已经尝试了正常的转换,但不起作用,这不应该被认为是命名空间,因为这不是命名空间,而只是一些文本。
2条答案
按热度按时间e4eetjau1#
您可以使用
JsonConvert.DeserializeXNode(value, deserializeRootElementName, writeArrayAttribute, bool encodeSpecialCharacters)
,或JsonConvert.DeserializeXmlNode(value, deserializeRootElementName, writeArrayAttribute, bool encodeSpecialCharacters)
,或EncodeSpecialCharacters
指定为true
的XmlNodeConverter
使用
encodeSpecialCharacters : true
将JSON转换为XML:如docs中所述,此参数为:
一个值,用于指示在将JSON转换为XML时是否对特殊字符进行编码。如果为true,则JSON属性名称中的特殊字符(如':'、'@'、'?'、'#'和'$')不会用于指定XML命名空间、属性或处理指令。相反,特殊字符将被编码并写入XML元素名称的一部分。
名称使用标准.NET方法
XmlConvert.EncodeLocalName(String)
编码,因此可以使用XmlConvert.DecodeName(String)
恢复。因此:
图纸:
演示小提琴here。
5m1hhzi42#
假设你需要能够保存数据,我的方法是编写一些规范化API,删除无效字符(空格,无论你发现什么)或用其他标记替换它们,然后 * 如果名称和规范化名称不同 *,使用自定义xml命名空间中的属性(通常是别名),所以你最终得到:
然后根据需要反转该过程。
但是请注意,
Dimension 4 : 4 : 4
在json或xml含义中似乎是一个糟糕的名称。