serialize serializar newtonsoft newton net example deserialize c# .net json json.net json-deserialization

serializar - serialize json to object c#



JSON.NET: deserializar y fusionar cadena JSON (2)

Tengo una cadena JSON procedente de un archivo con múltiples objetos JSON que necesito deserializar en un objeto C # fusionado.

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" } }

Aunque hay varios objetos JSON en el archivo, realmente me gustaría recuperar de la deserialización (o de alguna otra forma) un objeto C # fusionado como si viniera de una cadena como esta:

{ "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" } }

¿Es esto posible con JSON.NET o cualquier otra herramienta?

Muchas gracias de antemano chicos ...


El primer bloque de código no es JSON válido . Si desea que las bibliotecas JSON se encarguen de su entrada, primero deberá convertirla en JSON válido.

Si su entrada siempre se verá así, podría usar una expresión regular para encontrar el }/r/n/{ y reemplazarlo por una coma, que luego generará su segundo ejemplo:

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

Con la entrada del primer ejemplo que proporcionó, ahora produce el segundo ejemplo como salida, que es JSON válido y se puede deserializar de manera apropiada.


Si un XmlDocument combinado es lo suficientemente bueno, entonces usted puede:

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); }

cuyos rendimientos:

<?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>