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

276
Visualizações
system.text.json busca un json dinámico

Tengo esta cadena JSON:

 string jsonString = "{ "users":[ {"name":"John", "code":"white", "job":"actor"}, {"name":"Oliver", "code":"black", "job": "seller"} ] }"

luego deserializarlo usando:

 JsonElement je = JsonDocument.Parse(jsonString).RootElement; JsonElement.ArrayEnumerator users = je.GetProperty("users").EnumerateArray();

con system.text.json, ¿cómo puedo obtener primero JsonElement cuyo código es "negro"? Me refiero a sin bucles (foreach, ...).

con newtonsoft.json simplemente podría hacer esto:

 dynamic json = JsonConvert.DeserializeObject(jsonString); dynamic user = json.SelectToken("[?(@.code == 'black')]"); string name = user["name"], job = user["job"];
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

¿Cómo puedo obtener el primer JsonElement cuyo código es "negro"?

Crearía clases que representen su estructura json y luego deserializaría esas clases.

Puedes crear tus clases como tales:

 using System; using System.Linq; using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; public class People { [JsonPropertyName("users")] public List<User> Users { get; set; } } public class User { [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("code")] public string Code { get; set; } [JsonPropertyName("job")] public string Job { get; set; } }

Luego para deserializar:

 string jsonString = "{\"users\":[{\"name\":\"John\",\"code\":\"white\",\"job\":\"actor\"},{\"name\":\"Oliver\",\"code\":\"black\",\"job\":\"seller\"}]}"; People people = JsonSerializer.Deserialize<People>(jsonString);

Ahora puede obtener el primer objeto User donde code es negro:

 var usr = people.Users.Where(u => u.Code == "black").FirstOrDefault();

Aquí está el ejemplo que puede ejecutar.

ACTUALIZAR POR COMENTARIO

es JSON dinámico

Puede deserializar su json a JsonElement y luego intentar obtener las propiedades que desea.

 var people = JsonSerializer.Deserialize<JsonElement>(jsonString); if(people is JsonElement je && je.TryGetProperty("users", out je)){ // obj will be JsonElement if match is found var obj = je.EnumerateArray().Where(je => je.TryGetProperty("code", out je) && je.GetString() == "black").FirstOrDefault(); // Get what you need var name = obj.TryGetProperty("name", out JsonElement eleName) ? eleName.GetString() : "No name"; var job = obj.TryGetProperty("job", out JsonElement eleJob) ? eleJob.GetString() : "No job"; Console.WriteLine(string.Format("{0}\n{1}", name, job)); }

*Puedes probar este código allí

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