У меня есть объект C#. Я хочу сериализовать его на массив, а не на карту значения ключа.Сериализовать объект в массив
Мой C# класс:
[JsonArray()]
public class Foo
{
[JsonProperty(Order = 1)]
public Boolean Bar = true;
[JsonProperty(Order = 2)]
public Boolean Baz = false;
}
Нужный выход JSON:
[true,false]
Фактический выход JSON (если удалить атрибут JsonArray в верхней части):
{"Bar":true,"Baz":false}
У меня есть большое количество объектов в сложной иерархии объектов, которые мне нужно сериализовать как массив, а карту значений ключа. Я бы предпочел решение, которое не требует, чтобы то, что делает сериализацию, ничего не знало о том, что оно сериализует. Я хочу, чтобы иметь возможность просто вызвать JsonConvert.SerializeObject (myThing) на объекте верхнего уровня и полностью сериализовать все под-объекты из-за атрибутов, которые они имеют на себе.
В настоящее время у меня есть все мои объекты, реализующие IEnumerable, а затем я вручную обучу каждому из них, как вернуть свойства в правильном порядке, но это вызывает путаницу при работе на C#, потому что intellisense пытается предложить мне все LINQ операции над объектом, хотя ни один из них не подходит.
Я считаю, что возможно, хотя я не знаю, как добавить атрибут к Foo, который указывает на другой класс, который знает, как сериализовать Foo. Что-то вроде [JsonConverter(FooSerializer)]
, а затем FooSerializer
будет реализовывать JsonConverter
. Тем не менее, я изо всех сил пытаюсь найти много информации о том, как использовать JsonConverter для сериализации, большинство вопросов, которые люди задают, похоже, связаны с десериализацией.