gpt4 book ai didi

c# - 为什么我的数组对象的类型是 "type": ["object" ,"null"] when generating a JsonSchema

转载 作者:行者123 更新时间:2023-11-30 23:21:51 26 4
gpt4 key购买 nike

所以,我定义了一个类...

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"]

类型的数组中

我认为这是导致问题的原因,我如何才能在此处删除可为 null 的对象类型?

谢谢

最佳答案

方案允许null因为你可以做这样的事情并尝试序列化它,这在 C# 端是完全有效的:

myFoo.Bars.Add(null);

禁止null数组的 JSON 端的值,您需要使用 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 .

我是通过查看 source code 被引导到这个属性的的 JsonSchemaGenerator ,特别是第 285 行。

关于c# - 为什么我的数组对象的类型是 "type": ["object" ,"null"] when generating a JsonSchema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com