如何将属性指定为null或引用?讨论如何使用jsonschema将属性指定为null或引用.
我希望以昂首阔步的方式做同样的事情.
回顾上面的答案,使用jsonschema,可以这样做:
{
"definitions": {
"Foo": {
# some complex object
}
},
"type": "object",
"properties": {
"foo": {
"oneOf": [
{"$ref": "#/definitions/Foo"},
{"type": "null"}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
答案的关键是使用oneOf
.
我的问题的关键点:
我有一个复杂的对象,我想保持DRY,所以我把它放在一个定义部分,以便在我的swagger规范中重用:其他属性的值; 响应对象等
在我的规范中的各个地方,属性可能是对此类对象的引用或为null.
如何使用不支持的Swagger oneOf
或
anyOf
?
注意:一些swagger实现使用x-nullable
(或某些)指定属性值可以为null,但是,$ref
用它引用的内容替换该对象,因此它将显示任何使用x-nullable
被忽略.
我正在使用定义不透明类型的第三方 C 库:
foo_t
Run Code Online (Sandbox Code Playgroud)
并在其函数中使用指向该类型的指针:
void foo_init(foo_t *foo);
Run Code Online (Sandbox Code Playgroud)
典型用法是在堆栈上分配 foo_t 并传递引用:
{
foo_t foo;
foo_init(&foo);
...
}
Run Code Online (Sandbox Code Playgroud)
foo_init()
在不知道 a 的构成的情况下如何使用 ctypes 进行调用foo_t
?
我想如果我知道sizeof(foo_t)
我可以创建一个该大小的缓冲区并进行强制转换,但是是否可以使用 ctypes 获取该大小?
我可以编写一个单行 C 程序:
printf("sizeof(foo_t) = %zu\n", sizeof(foo_t));
Run Code Online (Sandbox Code Playgroud)
并将该值硬编码到我的Python中,但这很快就会变得丑陋:每次升级库时我都必须接触我的Python源代码。
一种稍微简洁的方法是编写一个 python c-ext 来导出大小值,但这也需要在每次库升级时重新编译。
有谁有使用 ctypes 与这种不透明类型的秘诀吗?