c# - 如何在 C# 中转换为 XML 之前验证 JSON 字符串

标签 c# xml json

  1. 我将收到 JSON 字符串形式的响应。
  2. 我们有一个用 C# 开发的现有工具,可以接收 XML 格式的输入。
  3. 因此,我将从使用 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/

相关文章:

c# - 如何以编程方式设置 layout_weight?

xml - 将 System.Xml.Linq 与单声道命令行编译器一起使用

javascript - ng 重复 json 解析显示空字符串

javascript - Ajax 和 Php 帖子问题

c# - 如何防范 "Object cannot be cast from DBNull to other types"?

c# - .Net 4.0有业务层 "Technology"吗?

c# - 在数值中设置点而不是逗号

mysql 高效执行数百万条 INSERT 语句

javascript - 从 json 响应中解析动态 json 对象

c# - 网络核心版本问题