В принципе, я хочу включить или опустить свойство из созданного Json на основе его значения во время сериализации.
Более конкретно, у меня есть тип, который знает, присвоено ли ему значение, и я хочу только сериализовать свойства этого типа, если ему что-то присвоено (так что мне нужно проверить значение во время выполнения), Я пытаюсь облегчить для моего API обнаружение разницы между "имеет значение по умолчанию" и "не было указано вообще".
Пользовательский JsonConverter не кажется достаточным; Я попробовал, и я считаю, что имя свойства уже сериализовано до того, как вызывается конвертер. В моем случае я хочу опустить даже имя свойства.
Я рассмотрел расширение DefaultContractResolver, но CreateProperty и CreateProperties (которые возвращают метаданные сериализации JsonProperty) принимают только сериализацию типа, поэтому я не могу проверить сам экземпляр. В общем, я ничего не вижу в DefaultContractResolver, позволяющем мне контролировать, если экземпляр сериализуется; возможно, я пропустил это.
Я также подумал, может быть, мне нужно создать ContractResolver, который возвратил пользовательский JsonObjectContract для моего типа. Но, опять же, я ничего не вижу в JsonObjectContract, который принимает решения на основе экземпляра.
Есть ли хороший способ достичь моей цели? Я просто пропустил что-то простое? Любая помощь, которую вы можете предоставить, очень ценится. Поскольку Json.NET настолько расширяема, я думал, что это будет не слишком сложно. Но я начинаю думать, что я ухожу в сорняках.:)