Как вручную проанализировать строку 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));