如何在 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));
我有一个具有以下结构的 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));