我想从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());
这会导致以下错误:
未处理的异常。Microsoft。CSharp。运行时绑定器。运行时绑定器异常:System.Text.Json.JsonElement.this[int]“的最佳重载方法匹配具有一些无效参数
2条答案
按热度按时间vmpqdwk31#
阅读了这个github,我成功地使用了这个方法:
NET 6将包括JsonNode类型,它可以用来序列化和反序列化动态数据。
尝试它的结果是:
对我来说似乎很管用。
正如@robnick的评论所说,您还可以链接
GetProperty
以获得数据结构的嵌套属性。8zzbczxx2#
以防万一别人在搜索这个主题的时候发现这个...
如果直接解析为JSON节点,则可以在单个GetValue中获取数据。
示例(使用显式类型以保持清晰,使用“!"处理空值):