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

413
Visualizações
Obtener datos en Json.Net c#

Quiero obtener datos del archivo json correctamente. El archivo de datos json que modelé para esto es el siguiente:

 { "Free title 1":[ { "Subject": "a1", "Relation": "a2" }, { "Subject": "b1", "Relation": "b2" } ], "Another free title":[ { "Subject": "z1", "Relation": "z2" }, { "Subject": "y1", "Relation": "y2" } ], "Unordered title":[ { "Subject": "x1", "Relation": "x2" }, { "Subject": "w1", "Relation": "w2" } ] }

Así es como creo una clase de objeto:

 public class _Infos_ { public List<_Info_> Infos { get; set; } } public class _Info_ { public string Subject { get; set; } public string Relation { get; set; } }

Y finalmente estoy tratando de obtener los datos en un método como este:

 var js = JsonConvert.DeserializeObject<_Infos_>(File.ReadAllText("__FILE_PATH__")); foreach (var j in js.Infos) { MessageBox.Show(j.Subject); }

Recibo el error de que js está vacío. Aquí quiero obtener Free title 1 , Another free title y el título Unordered title en una lista. Por supuesto, estos títulos cambiarán constantemente. Luego, quiero obtener los datos de Subject y Relation bajo estos títulos. Pero no tengo ni idea de cómo conseguirlo.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Su definición de clase es un poco incorrecta. Puede usar las herramientas en línea "json to c#" para generar las clases correctas. como este: https://json2csharp.com

Su "raíz" de su json, por ejemplo, no contiene una matriz en su json. La propiedad "Free title 1":[..] es una matriz, por lo que su raíz necesita una propiedad con el nombre FreeTitle1 y tiene que ser una matriz/lista.

 public class Root { [JsonProperty("Free title 1")] public List<TitleInfo> FreeTitle1 { get; set; } [JsonProperty("Another free title")] public List<TitleInfo> AnotherFreeTitle { get; set; } [JsonProperty("Unordered title")] public List<TitleInfo> UnorderedTitle { get; set; } } public class TitleInfo { public string Subject { get; set; } public string Relation { get; set; } }
over 4 years ago · Santiago Trujillo Relatório

0

Si los miembros de su objeto tienen nombres dinámicos, también puede deserializar manualmente el objeto, por ejemplo, utilizando el tipo general JObject . P.ej

 JObject obj = JObject.Parse(File.ReadAllText("__FILE_PATH__"));

JObject implementa IEnumerable<KeyValuePair<string, JToken>> sobre el que puede iterar. Cada miembro tendrá JToken Value , que es un JArray en este caso, que puede convertir a una List de su tipo.

 foreach (var groups in obj) { var infos = groups.Value.ToObject<List<_Info_>>(); // .. loop over infos }
over 4 years ago · Santiago Trujillo Relatório

0

Esta estructura de datos es un diccionario de colecciones de _Info_ s. Debe deserializarlo a Dictionary<string, List<_Info_>> .

Aquí hay ejemplos de System.Text.Json y Json.net:

 var d = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, List<_Info_>>>(json); var d2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<_Info_>>>(json);
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