Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!