MCPcopy Index your code
hub / github.com/53AI/53AIHub / encodeStructFields

Function encodeStructFields

api/middleware/response_encoder.go:191–234  ·  view source on GitHub ↗

encodeStructFields 编码结构体字段

(v reflect.Value)

Source from the content-addressed store, hash-verified

189
190// encodeStructFields 编码结构体字段
191func encodeStructFields(v reflect.Value) interface{} {
192 result := make(map[string]interface{})
193 t := v.Type()
194
195 for i := 0; i < v.NumField(); i++ {
196 field := v.Field(i)
197 fieldType := t.Field(i)
198
199 // 跳过未导出的字段
200 if !field.CanInterface() {
201 continue
202 }
203
204 // 获取JSON标签名称
205 jsonTag := fieldType.Tag.Get("json")
206 if jsonTag == "-" {
207 continue
208 }
209
210 fieldName := fieldType.Name
211 if jsonTag != "" {
212 parts := strings.Split(jsonTag, ",")
213 if parts[0] != "" {
214 fieldName = parts[0]
215 }
216 }
217
218 fieldValue := field.Interface()
219
220 if isIDField(fieldName) {
221 // 尝试编码ID字段
222 if encodedValue := tryEncodeID(fieldValue); encodedValue != nil {
223 result[fieldName] = encodedValue
224 } else {
225 result[fieldName] = fieldValue
226 }
227 } else {
228 // 递归处理嵌套结构
229 result[fieldName] = EncodeStructIDs(fieldValue)
230 }
231 }
232
233 return result
234}
235
236// encodeSliceStructs 编码结构体切片
237func encodeSliceStructs(v reflect.Value) interface{} {

Callers 1

EncodeStructIDsFunction · 0.85

Calls 5

isIDFieldFunction · 0.85
tryEncodeIDFunction · 0.85
EncodeStructIDsFunction · 0.85
TypeMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected