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

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

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 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!