Quiero recuperar un solo valor de una cadena json.
Anteriormente usé Newtonsoft así:
var jsonString = @"{ ""MyProp"" : 5 }"; dynamic obj = Newtonsoft.Json.Linq.JObject.Parse(jsonString); Console.WriteLine(obj["MyProp"].ToString());Pero parece que no puedo hacer que funcione en .NET 6:
He intentado esto hasta ahora:
var jsonString = @"{ ""MyProp"" : 5 }"; dynamic obj = await System.Text.Json.JsonSerializer.Deserialize<dynamic>(jsonString); Console.WriteLine(obj.MyProp.ToString());lo que resulta en este error:
Excepción no controlada. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: la mejor coincidencia de método sobrecargado para 'System.Text.Json.JsonElement.this[int]' tiene algunos argumentos no válidos
Leyendo sobre este github , tuve éxito usando este enfoque:
NET 6 incluirá el tipo JsonNode que se puede usar para serializar y deserializar datos dinámicos.
Probarlo da como resultado:
using System; public class Program { public static void Main() { var jsonString = @"{ ""MyProp"" : 5 }"; //parse it var myObject = System.Text.Json.JsonDocument.Parse(jsonString); //retrieve the value var myProp= myObject.RootElement .GetProperty("MyProp"); Console.WriteLine(myProp); } }Lo que parece funcionar en mi caso.