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

253
Vistas
Cómo manejar el diccionario con diferentes tipos de valores

Tengo un caso en el que la llamada de red recuperará la cadena json. y es como

 "{"PdfSearchCTTestExperiment": 0, "_ecs": {"PdfSearchCTTestExperiment": "PX-100967-1-13"}}"

Básicamente, la respuesta tendrá dos tipos de valores, uno es una cadena y otro es dictionary<cadena, cadena>.

Y necesito deserilizar los pares de valores clave internos y externos en el diccionario. Esta es mi manera de hacerlo:

 var outerDict = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(ss); string innerDictString = JsonConvert.SerializeObject(outerDict["_ecs"]); var innerDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(innerDictString );

Funciona, pero no creo que sea la forma eficiente. Básicamente, debido al sistema de tipos, necesito hacer como dos análisis más. ¿Alguna forma mejor de lograr esto? ¡Gracias!

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

0

Puede crear un modelo para su respuesta, algo como:

 public class ResponseModel { public int PdfSearchCTTestExperiment{get;set;} [JsonProperty("_ecs")] public Dictionary<string,string> Ecs{get;set;} }

y deserializarlo así:

 var responseModel = JsonConvert.DeserializeObject<ResponseModel>(ss); Console.WriteLine(responseModel.Ecs["PdfSearchCTTestExperiment"]);
over 4 years ago · Santiago Trujillo Denunciar

0

json

 { "PdfSearchCTTestExperiment": 0, "key1": "value1", "key2": "value2", "_ecs": { "PdfSearchCTTestExperiment": "PX-100967-1-13" } }

La forma más fácil de llegar a lo que realmente necesita es el análisis json, en lugar de la deserialización.

 var jsonObject = JObject.Parse(json);

prueba

 string key1= (string) jsonObject["key1"]; string pdfSearchCTTestExperiment= (string)jsonObject["_ecs"]["PdfSearchCTTestExperiment"];

si aún desea deserializar en 2 diccionarios en lugar de analizar, deberá crear una clase

 public class Dictionaries { public Dictionary<string, string> OuterDict { get; set; } public Dictionary<string, string> InnerDict { get; set; } }

código

 var jsonObject = JObject.Parse(json); var dictionaries = new Dictionaries{ OuterDict = jsonObject.Properties().Where(o => o.Name != "_ecs").ToDictionary(o => o.Name, o => (string)o.Value), InnerDict = jsonObject.Properties().Where(o => o.Name == "_ecs").FirstOrDefault().Value.ToObject<Dictionary<string, string>>() };

prueba

 string key1=dictionaries.OuterDict["key1"]; string pdfSearchCTTestExperiment= dictionaries.InnerDict["PdfSearchCTTestExperiment"];
over 4 years ago · Santiago Trujillo Denunciar

0

¿Se adapta Dictionary<string,object> a sus necesidades? Luego puede volver a convertir al tipo necesario a través de la reflexión

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