JSON.NET:反序列化和合并 JSON 字符串



我有一个 JSON 字符串,来自一个包含多个 JSON 对象的文件,我需要将其反序列化为一个合并的 C# 对象。

File1.json

{
   "manage_employees_section_title": 
    {
        "value": "Manage employees",
        "description": "The mange employees section title"
    }
}
{
   "manage_operations_section_title": 
    {
        "value": "Manage operations",
        "description": "The mange operations section title"
    }
}

即使文件中有多个 JSON 对象,我真的很想从反序列化(或其他方式)中返回一个合并的 C# 对象,就像它来自这样的字符串一样:

{
   "manage_employees_section_title": 
    {
        "value": "Manage employees",
        "description": "The mange employees section title"
    },
   "manage_operations_section_title": 
    {
        "value": "Manage operations",
        "description": "The mange operations section title"
    }
}

这可以用JSON.NET或任何其他工具吗?

提前非常感谢伙计们..

第一个代码块不是有效的 JSON。如果您希望 JSON 库处理您的输入,您首先需要将其转换为有效的 JSON。

如果你的输入总是看起来像这样,你可以使用正则表达式来查找}rn{并将其替换为逗号,然后生成你的第二个示例:

var output = Regex.Replace(input, "rn}rn{", ",");

使用您提供的第一个示例的输入,现在将生成第二个示例作为输出,该示例是有效的 JSON,可以适当地反序列化。

如果组合的 XmlDocument 足够好,那么您可以:

        string json1 = "{ "manage_employees_section_title": {"value": "Manage employees","description": "The mange employees section title"}}";
        string json2 = "{ "manage_operations_section_title": {"value": "Manage operations","description": "The mange operations section title"}}";
        XmlDocument doc = new XmlDocument();
        var root = doc.CreateElement("element", "root", "");
        doc.AppendChild(root);
        var xmlNode = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json1);
        var xmlNode2 = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json2);
        foreach (XmlNode node in xmlNode.ChildNodes)
        {
            XmlNode imported = doc.ImportNode(node, true);
            doc.DocumentElement.AppendChild(imported);
        }
        foreach (XmlNode node in xmlNode2.ChildNodes)
        {
            XmlNode imported = doc.ImportNode(node, true);
            doc.DocumentElement.AppendChild(imported);
        }

这会产生:

<?xml version="1.0" ?>
<root>
    <manage_employees_section_title>
        <value>Manage employees</value>
        <description>The mange employees section title</description>
    </manage_employees_section_title>
    <manage_operations_section_title>
        <value>Manage operations</value>
        <description>The mange operations section title</description>
    </manage_operations_section_title>
</root>

相关内容

  • 没有找到相关文章

最新更新