如何在 net-core 2.0 中手动解析 JSON 字符串

How to manually parse a JSON string in net-core 2.0

我有一个具有以下结构的 json 字符串

{
    "resource": "user",
    "method": "create",
    "fields": {
        "name": "John",
        "surname: "Smith",
        "email": "john@gmail.com"
    }
}

字段中的键是可变的,这意味着我事先不知道它们

因此,我需要遍历 json,而不是将 json 字符串反序列化为对象,以便获取 字段 中的属性在字典或类似的东西中。

我听说了 Json.NET 库,它能够解析动态 jsons,但我不确定它是否已经包含在 net-core 中。

在 net-core 2.0 中实现该目标的标准/最简单方法是什么。代码示例将不胜感激。

Json.NET 是序列化 .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

是的。您可以将 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);
 }
using System.Web.Script.Serialization;
using System.Dynamic;

var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));