serialize recorrer newtonsoft jobject create c# serialization json.net .net-4.5 expandoobject

recorrer - serialize dynamic object c#



Deserializar una propiedad como un ExpandoObject usando JSON.NET (1)

Prueba esto:

Container container = new Container { Data = new Dictionary<string, object> { { "Text", "Hello world" } } }; string jsonText = JsonConvert.SerializeObject(container); var obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonText, new ExpandoObjectConverter());

Descubrí que al hacer esto ExpandoObject un ExpandoObject de la llamada a DeserializeObject . Creo que el problema con el código que ha proporcionado es que mientras está suministrando un ExpandoObjectConverter , le está pidiendo a Json.Net que deserialice un Container , así que me imagino que el ExpandoObjectConverter no se está utilizando.

Editar:

Si decorar la propiedad Data con [JsonConverter(typeof(ExpandoObjectConverter))] y uso el código:

var obj = JsonConvert.DeserializeObject<Container>(jsonText);

Entonces la propiedad de Data se deserializa a un ExpandoObject , mientras que obj es un Container .

Por ejemplo, hay un objeto como el siguiente:

public class Container { public object Data { get; set; } }

Y se usa de esta manera:

Container container = new Container { Data = new Dictionary<string, object> { { "Text", "Hello world" } } };

Si deserializo una cadena JSON obtenida de la serialización de la instancia anterior, la propiedad Data , incluso si proporciono el ExpandoObjectConverter , no se deserializa como un ExpandoObject :

Container container = JsonConvert.Deserialize<Container>(jsonText, new ExpandoObjectConverter());

¿Cómo puedo deserializar una propiedad de clase asignada con un objeto anónimo, o al menos, no tipo concreto como un ExpandoObject ?

EDITAR:

Alguien respondió que podía usar el objeto dinámico. Esto no funcionará para mí. Sé que podría ir por este camino, pero este no es el caso porque necesito un ExpandoObject. Gracias.

EDICION 2:

Algún otro usuario respondió que podría deserializar una cadena JSON en un ExpandoObject . Este no es el objetivo de esta pregunta. Necesito deserializar un tipo concreto que tenga una propiedad dinámica. En la cadena JSON, esta propiedad podría ser una matriz asociativa.