Necesito serializar las cadenas de un archivo de recursos (.resx) en un objeto JSON. Las claves del archivo de recursos están en flujo y, por lo tanto, no puedo simplemente crear un objeto C# que acepte los valores apropiados. Necesita ser una solución dinámica. Puedo recorrer los pares clave-valor para el archivo, pero necesito una manera fácil de serializarlos en JSON.¿Cómo crear dinámicamente un objeto JSON en C# (desde un archivo de recursos ASP.NET)?
Sé que podría hacer:
Object thing = new {stringOne = StringResource.stringOne; ...}
Pero, Prefiero tener algo como:
Object generic = {}
foreach (DictionaryEntry entry in StringResource) {
generic.(entry.Key) = entry.Value
}
O debo crear un JSON serializador personalizado que construye el objeto poco a poco (es decir, bucle foreach que agrega parte de la cadena JSON con cada ciclo)?
EDITAR
terminé escribiendo un serializador JSON rápida que construye el campo de cadena a la vez. No quería incluir una biblioteca JSON completa ya que este es el único uso de objetos JSON (al menos por ahora). En última instancia, lo que quería es probablemente poco práctico y no existe, ya que su función está mejor atendida por otras estructuras de datos. ¡Gracias por todas las respuestas!
Esto es lo que estaba buscando, pero también debo poder especificar el nombre de campo dinámicamente (lo sé, requisito impar). Terminé escribiendo un serializador rápido y sucio que hizo el truco, pero esta es la respuesta correcta. –
Parece que puede convertir el ExpandoObject en un 'IDictionary', y eso le permitirá determinar nombres de campo en tiempo de ejecución. Un ejemplo de eso es en el enlace de MSDN hacia abajo. Pero un serializador personalizado es probablemente igual de bueno. –
Phil
Eh, eso es un truco genial, tal vez lo cambie ... –