动态检索 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);
}
}
这似乎对我有用。
我想从 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);
}
}
这似乎对我有用。