如何在net-core 2.0

时间:2017-09-04 03:44:40

标签: c# json asp.net-core .net-core .net-core-2.0

我有一个带有以下结构的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中实现这一目标的标准/最简单方法是什么?代码示例将不胜感激。

3 个答案:

答案 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)

当您序列化.NET对象时,

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