actorapz
actorapz

Reputation: 83

Disabling null type in Newtonsoft JSON.NET schema

I have an MVC application, that serializes my model into json schema (using Newtonsoft json.net schema). The problem is that items in my array have type ["string", "null"], but what I need is just "string". Here is code for my class:

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

This is schema made by Json.net schema:

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

While I am expecting this:

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

Help me get rid of that "null" please.

Upvotes: 6

Views: 2067

Answers (3)

Arun
Arun

Reputation: 430

Try this ::

     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);

output: with null

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

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

output: without null

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

Upvotes: -1

Randi Ratnayake
Randi Ratnayake

Reputation: 684

Try setting DefaultRequired to DisallowNull when you generate the schema:

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

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

Output:

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

Upvotes: 9

ltiveron
ltiveron

Reputation: 578

You can try this:

   [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

Upvotes: 0

Related Questions