所以,我有一个类定义为......
public class foo
{
public List<bar> Bars {get;set;}
}
public class bar
{
public string foorbar {get;set;}
}
当我使用JsonSchemaGenerator
生成其架构时,我得到以下输出......
var generator = new JsonSchemaGenerator();
return generator.Generate(typeof(foo), false);
{
"type": "object",
"properties" : {
"Bars":{
"type": "array",
"items": {
"type": ["object","null"],
"properties": {
"foorbar":{"type":"string"}
}
}
}
}
}
那么,为什么我的项目在 "type": ["object","null"]
我认为这会导致问题,如何在此处删除可以为空的对象类型?
由于
答案 0 :(得分:1)
该方案允许null
因为您可以执行类似的操作并尝试将其序列化,这在C#端完全有效:
myFoo.Bars.Add(null);
要禁用数组JSON端的null
值,您需要使用JsonArrayAttribute
。不幸的是,这个属性无法添加到字段中;它需要添加到一个类。这意味着您需要创建一个包装List<bar>
的类并将该属性应用于该类。最终的类结构如下所示:
public class foo
{
public ListOfBar Bars { get; set; }
}
public class bar
{
public string foorbar { get; set; }
}
[JsonArray(false)]
public class ListOfBar : List<bar> {}
可以找到有关该属性的详细信息here。
通过查看JsonSchemaGenerator
的{{3}},特别是第285行,我了解了这个属性。