如何在 net-core 2.0 中手动解析 JSON 字符串
Posted
技术标签:
【中文标题】如何在 net-core 2.0 中手动解析 JSON 字符串【英文标题】:How to manually parse a JSON string in net-core 2.0 【发布时间】:2018-02-12 06:38:04 【问题描述】:我有一个具有以下结构的 json 字符串
"resource": "user",
"method": "create",
"fields":
"name": "John",
"surname: "Smith",
"email": "john@gmail.com"
fields里面的键是可变的,也就是说我事先不知道它们
因此,我不需要将 json 字符串反序列化为对象,而是需要遍历 json,以便在 Dictionary 或类似的东西中获取 fields 内的属性。
我听说过 Json.NET 库,它能够解析动态 json,但我不确定它是否已经包含在 net-core 中。
在 net-core 2.0 中实现这一目标的标准/最简单的方法是什么。代码示例将不胜感激。
【问题讨论】:
是的,您可以在 .NET Core 中使用 Json.NET。 【参考方案1】:是的。您可以将 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);
【讨论】:
这对我有用:foreach (var property in resource.Properties())【参考方案2】:Json.NET 是序列化 .NET 对象时的首选库。但是,当对象的结构不是静态的时,来自 System.Json 命名空间的 API 将更易于使用。通过从 NuGet 安装一个包,可以在 .NET Core 2.0 中使用 System.Json,如下所示:
dotnet add package System.Json --version 4.4.0
这是一个很好的教程,介绍如何使用 System.Json 命名空间中的 API:Working with JSON in .NET – a Silverlight example
【讨论】:
【参考方案3】:using System.Web.Script.Serialization;
using System.Dynamic;
var serializer = new javascriptSerializer();
serializer.RegisterConverters(new[] new DynamicJsonConverter() );
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));
【讨论】:
这是用什么包? System.Json?以上是关于如何在 net-core 2.0 中手动解析 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JOOQ 和 Spring-boot 2.0 进行手动事务管理?