Как вручную проанализировать строку JSON в net-core 2.0

У меня есть строка json со следующей структурой

{
    "resource": "user",
    "method": "create",
    "fields": {
        "name": "John",
        "surname: "Smith",
        "email": "[email protected]"
    }
}

Ключи внутри полей являются переменными, это означает, что я не знаю их заранее

Итак, вместо десериализации строки json для объекта мне нужно пройти json, чтобы получить свойства внутри полей в словаре или что-то в этом роде.

Я слышал о библиотеке Json.NET и способности анализировать динамические jsons, но я не уверен, что он уже включен в net-core или нет.

Каким будет стандартный/простой способ сделать это в net-core 2.0. Пример кода будет оценен.

Ответ 1

Да. Вы можете добавить пакет 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);
 }

Ответ 2

Json.NET - это библиотека переходов при сериализации объектов .NET. Однако, когда структура объектов не является статичной, API из пространства имен System.Json будет проще в использовании. System.Json можно использовать в .NET Core 2.0, установив пакет из NuGet следующим образом:

dotnet add package System.Json --version 4.4.0

Вот хорошее руководство по использованию API из пространства имен System.Json: Работа с JSON в .NET - пример Silverlight

Ответ 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));