fix: 修复 schema 清理逻辑
This commit is contained in:
@@ -146,17 +146,10 @@ func cleanJSONSchemaRecursive(value any) any {
|
|||||||
for _, v := range schemaMap {
|
for _, v := range schemaMap {
|
||||||
if _, isMap := v.(map[string]any); isMap {
|
if _, isMap := v.(map[string]any); isMap {
|
||||||
cleanJSONSchemaRecursive(v)
|
cleanJSONSchemaRecursive(v)
|
||||||
} else if _, isArr := v.([]any); isArr {
|
} else if arr, isArr := v.([]any); isArr {
|
||||||
// 数组内的对象也要递归
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 稍微补全一下数组递归
|
|
||||||
for k, v := range schemaMap {
|
|
||||||
if arr, ok := v.([]any); ok {
|
|
||||||
for _, item := range arr {
|
for _, item := range arr {
|
||||||
cleanJSONSchemaRecursive(item)
|
cleanJSONSchemaRecursive(item)
|
||||||
}
|
}
|
||||||
schemaMap[k] = arr
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -455,18 +448,18 @@ func mergeAllOf(m map[string]any) {
|
|||||||
}
|
}
|
||||||
if len(mergedReq) > 0 {
|
if len(mergedReq) > 0 {
|
||||||
existReq, _ := m["required"].([]any)
|
existReq, _ := m["required"].([]any)
|
||||||
var currentReqs []string
|
var validReqs []any
|
||||||
for _, r := range existReq {
|
for _, r := range existReq {
|
||||||
if s, ok := r.(string); ok {
|
if s, ok := r.(string); ok {
|
||||||
currentReqs = append(currentReqs, s)
|
validReqs = append(validReqs, s)
|
||||||
delete(mergedReq, s) // already exists
|
delete(mergedReq, s) // already exists
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// append new
|
// append new
|
||||||
for r := range mergedReq {
|
for r := range mergedReq {
|
||||||
existReq = append(existReq, r)
|
validReqs = append(validReqs, r)
|
||||||
}
|
}
|
||||||
m["required"] = existReq
|
m["required"] = validReqs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user