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

C# JSON.NET:反序列化和合并JSON字符串,c#,.net,json,json.net,json-deserialization,C#,.net,Json,Json.net,Json Deserialization,我有一个JSON字符串,它来自一个包含多个JSON对象的文件,我需要将这些JSON对象反序列化为一个合并的C#对象 File1.json { "manage_employees_section_title": { "value": "Manage employees", "description": "The mange employees section title" } } { "manage_operations_section

我有一个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

如果输入总是这样,可以使用正则表达式查找
}\r\n\{
并用逗号替换它,然后生成第二个示例:

var output = Regex.Replace(input, "\r\n}\r\n{", ",");

使用您提供的第一个示例的输入,现在将生成第二个示例作为输出,它是有效的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>

管理员工
管理员工组标题
管理运营
管理操作部分标题

@dav_i我也在想同样的事情,非常感谢。