Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

110
Vistas
C# | Cree una cadena json a partir de campos de clase estática con valores

Necesito un método que pueda recorrer todas las propiedades estáticas en una clase estática y combinarlas en una cadena con sintaxis json , donde el nombre de la clave sería igual al nombre de la propiedad y el valor de la clave sería el valor de la propiedad.

Entonces el resultado sería una cadena con valor:

 { "StaticPropertyName_string": "string_value_of_this_property", "StaticPropertyName_int": 34 }

Tengo un método de trabajo que hace lo contrario con éxito: toma un json y asigna datos a campos estáticos. Pero no puedo entender cómo hacerlo al revés.

 public static void MapProfileToJson(JToken source) //// source = plain json string { var destinationProperties = typeof(Fields) .GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (JProperty prop in source) { var destinationProp = destinationProperties .SingleOrDefault(p => p.Name.Equals(prop.Name, StringComparison.OrdinalIgnoreCase)); var value = ((JValue)prop.Value).Value; if (typeof(Fields).GetProperty(prop.Name) != null) destinationProp.SetValue(null, Convert.ChangeType(value, destinationProp.PropertyType)); else Console.WriteLine("(!) property \"" + prop.Name + "\" is not found in class... skip"); } }

Ejemplo de clase estática:

 public static class Fields { public static bool BoolField { get; set; } public static string StringField { get; set; } public static int IntField { get; set; } public static double DoubleField { get; set; } }

ps Los pares de valores clave guardados en una cadena, podrían envolverse al final como

 ResultString = "{ " + resultString + " }";

C# .NET 4.7.2 (aplicación de consola)

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Como han dicho otros, una clase static no es un buen diseño aquí.

Sin embargo, es posible volver a asignarlo a JSON con una simple reflexión:

 public static JObject MapStaticClassToJson(Type staticClassToMap) { var result = new JObject(); var properties = staticClassToMap.GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (PropertyInfo prop in properties) { result.Add(new JProperty(prop.Name, prop.GetValue(null, null))); } return result; }
over 4 years ago · Santiago Trujillo Denunciar

0

Creo que sería bueno tener un código simple para asignar propiedades json a las propiedades de una clase estática también. Creé este código usando la respuesta de @RichardDeeming

 public static void MapStaticClassFromJson(string json, Type staticClassToMap) { var jsonObject = JObject.Parse(json); var properties = staticClassToMap.GetProperties(BindingFlags.Public | BindingFlags.Static); foreach (PropertyInfo prop in properties) prop.SetValue(null, Convert.ChangeType(jsonObject[prop.Name], prop.PropertyType, CultureInfo.CurrentCulture), null); }

prueba

 MapStaticClassFromJson(json,typeof(Data)); Console.WriteLine(Data.StaticPropertyName_int); Console.WriteLine(Data.StaticPropertyName_string);

resultado

 34 string_value_of_this_property
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda