Как получить доступ к закрытым членам класса для создания схемы JSON с помощью JSON.net? - PullRequest
0 голосов
/ 22 сентября 2019

Я использую код, показанный ниже, для генерации схемы JSON.Тем не менее, он генерирует схему с использованием открытых членов.Есть ли способ сделать это, используя как частные, так и публичные члены?

JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(type);

1 Ответ

0 голосов
/ 22 сентября 2019

Я использовал JsonPropertyAttribute, чтобы заставить DefaultContractResolver использовать мое личное поле:

    public class Program
    {
        public static async Task Main(string[] args)
        {
            var generator = new JsonSchemaGenerator();
            JsonSchema schema = generator.Generate(typeof(Person));
        }
    }

    public class Person
    {
        [JsonProperty]
        private string SecretName;

        public string PublicName { get; set; }
    }

Полученная схема имеет как SecretName, так и PublicName.

Anальтернативой также может быть написание пользовательского IContractResolver, как показано здесь .

Обратите внимание, что я сделал это, посмотрев код генерации схемы для устаревших методов в JSON.net, но яПредположим, что это будет работать аналогично для отдельного пакета.Насколько я знаю, исходный код для этого не является общедоступным.

...