我有一个带有以下结构的json字符串
{
"resource": "user",
"method": "create",
"fields": {
"name": "John",
"surname: "Smith",
"email": "john@gmail.com"
}
}
字段中的键是可变的,这意味着我事先不知道它们
因此,我不需要将json字符串反序列化为对象,而是需要遍历json,以便在Dictionary中的 fields 中获取属性或类似内容。
我听说过Json.NET库,它能够解析动态jsons,但我不确定它是否已经包含在net-core中了。
在net-core 2.0中实现这一目标的标准/最简单方法是什么?代码示例将不胜感激。
答案 0 :(得分:23)
是。您可以将Newtonsoft.json包添加到.net核心项目中。要查询动态json对象,可以使用库提供的JObject
对象将json解析为动态对象。以下是文档的link。
鉴于你的json样本,它可能看起来像这样
var resource = JObject.Parse(json);
foreach (var property in resource.fields.Properties())
{
Console.WriteLine("{0} - {1}", property.Name, property.Value);
}
答案 1 :(得分:6)
Json.NET是首选库。但是,当对象的结构不是静态时,System.Json命名空间中的API将更易于使用。 System.Json可以通过从NuGet安装包来在.NET Core 2.0中使用,如下所示:
dotnet add package System.Json --version 4.4.0
这是一个很好的教程,介绍如何使用System.Json命名空间中的API:Working with JSON in .NET – a Silverlight example
答案 2 :(得分:0)
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));