gpt4 book ai didi

JSONSchema 如何定义动态对象的架构

转载 作者:行者123 更新时间:2023-12-03 00:34:29 26 4
gpt4 key购买 nike

我有一个 JSON 响应,我正在尝试为其创建 JSONSchema

{
"gauges": {
"foo": {
"value": 1234
},
"bar": {
"value": 12.44
}
}
}

重要的是要知道关联数组 gauges 中的对象是动态生成的,因此可以有零到多个。 gauges 中的每个对象始终都有一个 value 属性,并且始终是一个数字。

所以这些都是有效的

示例 1

{
"gauges": {
"foo": {
"value": 1234
}
}
}

示例 2

{
"gauges": {
"dave": {
"value": 0.44
},
"tommy": {
"value": 12
},
"steve": {
"value": 99999
}
}
}

示例 3

{
"gauges": {}
}

我已经查看了规范,如果这是一个数组,我知道我可以使用 anyOf 但我不确定如何做到这一点,或者是否可能。

注意我无法更改 JSON 的格式

最佳答案

从概念上讲,您想要的是一个表示类型化映射的对象。

困难在于您没有命名属性来将规范放入架构中,但在这种情况下您可以使用“additionalProperties”

{
"type": "object",
"properties": {
"gauges": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"value": {"type": "number"}
}
}
}
}
}

“gauges”属性被定义为一个对象,其中每个“additionalProperties”都将具有包含数字类型值的类型。

注意: 在 java 中,您可以将其序列化为 Map<String,Value> Value 包含值的类。 (不知道其他类型的语言,但我愿意接受建议)

这个答案指向模拟解决方案 How to define JSON Schema for Map<String, Integer>?

关于JSONSchema 如何定义动态对象的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387839/

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