Отключение нулевого типа в схеме Newtonsoft JSON.NET

2

У меня есть приложение MVC, которое сериализует мою модель в json-схему (с использованием схемы Newtonsoft json.net). Проблема в том, что элементы в моем массиве имеют тип ["string", "null"], но то, что мне нужно, это просто "string". Вот код для моего класса:

public class Form
{
    [Required()]
    public string[] someStrings { get; set; }
}

Это схема, сделанная схемой Json.net:

"someStrings": {
  "type": "array",
  "items": {
    "type": [
      "string",
      "null"
    ]
  }
}

Хотя я ожидаю этого:

"someStrings": {
  "type": "array",
  "items": {
    "type": "string"        
  }
}

Помогите мне избавиться от этого "нулевого", пожалуйста.

Теги:
json.net
jsonschema

3 ответа

4
Лучший ответ

Попробуйте установить DefaultRequired to DisallowNull при создании схемы:

JSchemaGenerator generator = new JSchemaGenerator() 
{ 
    DefaultRequired = Required.DisallowNull 
};

JSchema schema = generator.Generate(typeof(Form));
schema.ToString();

Выход:

{
  "type": "object",
  "properties": {
    "someStrings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
  • 0
    Обратите внимание, что для этого решения требуется пакет Newtonsoft.JsonSchema - этот класс недоступен в пакете Newtonsoft.Json.
0

Попробуй это ::

     public class Employee 
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public decimal? Salary { get; set; }
        }    

        Employee employee= new Employee
            {
                Name = "Heisenberg",
                Age = 44
            };

            string jsonWithNullValues = JsonConvert.SerializeObject(person, Formatting.Indented);

вывод: с нулем

// {
//   "Name": "Heisenberg",
//   "Age": 44,
//   "Salary": null
// }

 string jsonIgnoreNullValues = JsonConvert.SerializeObject(employee, Formatting.Indented, new JsonSerializerSettings
    {
        NullValueHandling = NullValueHandling.Ignore
    });

вывод: без нуля

// {
//   "Name": "Heisenberg",
//   "Age": 44
// }
0

Вы можете попробовать следующее:

   [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
  • 0
    Без изменений :(
  • 0
    Вы сами делаете сериализацию? Если да, вы можете попробовать это: newtonsoft.com/json/help/html/NullValueHandlingIgnore.htm
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню