Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda