动态检索 json 元素 .NET 6

Dynamic retrieve json element .NET 6

我想从 json 字符串中检索单个值。

以前我这样使用 Newtonsoft

var jsonString = @"{ ""MyProp"" : 5 }";
dynamic obj = Newtonsoft.Json.Linq.JObject.Parse(jsonString);
        
Console.WriteLine(obj["MyProp"].ToString());

但我似乎无法让它在 .NET 6 中工作:

到目前为止我已经试过了:

var jsonString = @"{ ""MyProp"" : 5 }";
dynamic obj = await System.Text.Json.JsonSerializer.Deserialize<dynamic>(jsonString);
        
Console.WriteLine(obj.MyProp.ToString());

导致此错误:

Unhandled exception. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'System.Text.Json.JsonElement.this[int]' has some invalid arguments

阅读本文 github,我使用这种方法取得了成功:

NET 6 will include the JsonNode type which can be used to serialize and deserialize dynamic data.

尝试结果:

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);
    }
}

这似乎对我有用。