Десериализовать значения словаря JSON с помощью JsonConverter
1354 просмотра
2 ответа
Я использую библиотеку Json.NET для десериализации JSON. Для абстрактного класса у Foo
меня есть обычай JsonConverter
. Вот как я это использовал:
[JsonConverter(typeof(FooJsonConverter))]
public Foo MyFoo { get; set; }
Все идет нормально. Проблема возникает, когда я использую класс Foo в словаре. Это была моя попытка:
[JsonDictionary(ItemConverterType = typeof(FooJsonConverter))]
public Dictionary<string, Foo> MyFooDictionary { get; set; }
Но вышесказанное дает ошибку:
Атрибут 'JsonDictionary' недопустим в этом типе объявления. Он действителен только для объявлений класса, интерфейса.
Как указать конвертер для значения словаря?
Автор: holmis83 Источник Размещён: 12.11.2019 09:52Ответы (2)
3 плюса
Используйте [JsonProperty]
вместо [JsonDictionary]
.
[JsonProperty(ItemConverterType = typeof(FooJsonConverter))]
public Dictionary<string, Foo> MyFooDictionary { get; set; }
Скрипка: https://dotnetfiddle.net/QJCtBg
Другой вариант - добавить конвертер в JsonSerializerSettings
и передать его JsonConvert.DeserializeObject
.
var settings = new JsonSerializerSettings();
settings.Converters.Add(new FooJsonConverter());
var obj = JsonConvert.DeserializeObject<ObjType>(json, settings);
Автор: Brian Rogers
Размещён: 12.11.2015 03:23
-1 плюса
Добавьте атрибут в ваш класс Foo. Вероятно, это связано с тем, что ваш словарь может содержать два разных типа, а атрибут не будет знать, на какой из них вы ссылаетесь.
[JsonDictionary(ItemConverterType = typeof(FooJsonConverter))]
public class Foo
{
...
}
Автор: Praveen Paulose
Размещён: 12.11.2015 03:27
Вопросы из категории :
- c# Преобразовать десятичную в двойную?
- c# Как рассчитать чей-то возраст в C #?
- c# Как вы сортируете словарь по значению?
- c# В чем разница между int и Integer в Java и C #?
- c# Как создать новый экземпляр объекта из Типа
- c# Datatable против Dataset
- json Безопасное превращение строки JSON в объект
- json Как я могу "красиво" отформатировать вывод JSON в Ruby on Rails?
- json Сериализация JSON в jQuery
- json Можете ли вы использовать запятую в JSON-объекте?
- json Можно ли использовать комментарии в формате JSON?
- json Могу ли я подавать RSS в формате JSON?
- json.net Как конвертировать JSON в XML или XML в JSON?
- json.net Разбор JSON в C #
- json.net Deserializing JSON data to C# using JSON.NET
- json.net Порядок сериализованных полей с использованием JSON.NET
- json.net Конвенция о присвоении имен JSON
- json.net Как я могу использовать JSON.NET для десериализации во вложенный / рекурсивный словарь и список?