- 我将收到 JSON 字符串形式的响应。
- 我们有一个用 C# 开发的现有工具,可以接收 XML 格式的输入。
- 因此,我将从使用 Newtonsoft.JSON 的服务器获取的 JSON 字符串转换为 XML 字符串并传递给该工具。
问题: 将 JSON 响应转换为 XML 时,出现错误
"Failed to process request. Reason: The ' ' character, hexadecimal value 0x20, cannot be included in a name."
上述错误表明 JSON Key 包含一个空格 [例如:\"POI Items\":[{\"lat\":{\"value\":\"00\"}] 无法转换为 XML 元素。
是否有任何方法可以仅识别 JSON 键的 ["POI Items"] 的空格并删除其中的空格?
还建议任何替代解决方案,以便我们无需更改现有解决方案?
问候,
苏迪尔
最佳答案
您可以使用 Json.Net并在加载 json 时替换名称..
JsonSerializer ser = new JsonSerializer();
var jObj = ser.Deserialize(new JReader(new StringReader(json))) as JObject;
var newJson = jObj.ToString(Newtonsoft.Json.Formatting.None);
.
public class JReader : Newtonsoft.Json.JsonTextReader
{
public JReader(TextReader r) : base(r)
{
}
public override bool Read()
{
bool b = base.Read();
if (base.CurrentState == State.Property && ((string)base.Value).Contains(' '))
{
base.SetToken(JsonToken.PropertyName,((string)base.Value).Replace(" ", "_"));
}
return b;
}
}
输入: {"POI Items":[{"lat":{"value":"00","ab cd":"de fg"}}]}
输出: {"POI_Items":[{"lat":{"value":"00","ab_cd":"de fg"}}]}
关于c# - 如何在 C# 中转换为 XML 之前验证 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271537/