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

ope*_*sas 11 c# json .net-core asp.net-core .net-core-2.0

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

{
    "resource": "user",
    "method": "create",
    "fields": {
        "name": "John",
        "surname: "Smith",
        "email": "john@gmail.com"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Jay*_*aya 25

是.您可以将Newtonsoft.json包添加到.net核心项目中.要查询动态json对象,可以使用JObject库提供的对象将json解析为动态对象.这是该文档的链接.

鉴于你的json样本,它可能看起来像这样

 var resource = JObject.Parse(json);
 foreach (var property in resource.fields.Properties())
 {
   Console.WriteLine("{0} - {1}", property.Name, property.Value);
 }
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用:foreach(resource.Properties()中的var属性) (4认同)

Mat*_*olc 6

序列化.NET对象时,Json.NET首选库。但是,如果对象的结构不是静态的,则System.Json命名空间中的API将更易于使用。通过从NuGet安装程序包,可以在.NET Core 2.0中使用System.Json,如下所示:

dotnet add package System.Json --version 4.4.0
Run Code Online (Sandbox Code Playgroud)

这是一个很好的教程,说明如何使用System.Json命名空间中的API:在.NET中使用JSON – Silverlight示例