MCPcopy
hub / github.com/openai/openai-go / newArrayTypeDecoder

Method newArrayTypeDecoder

internal/apijson/decoder.go:290–311  ·  view source on GitHub ↗
(t reflect.Type)

Source from the content-addressed store, hash-verified

288}
289
290func (d *decoderBuilder) newArrayTypeDecoder(t reflect.Type) decoderFunc {
291 itemDecoder := d.typeDecoder(t.Elem())
292
293 return func(node gjson.Result, value reflect.Value, state *decoderState) (err error) {
294 if !node.IsArray() {
295 return fmt.Errorf("apijson: could not deserialize to an array")
296 }
297
298 arrayNode := node.Array()
299
300 arrayValue := reflect.MakeSlice(reflect.SliceOf(t.Elem()), len(arrayNode), len(arrayNode))
301 for i, itemNode := range arrayNode {
302 err = itemDecoder(itemNode, arrayValue.Index(i), state)
303 if err != nil {
304 return err
305 }
306 }
307
308 value.Set(arrayValue)
309 return nil
310 }
311}
312
313func (d *decoderBuilder) newStructTypeDecoder(t reflect.Type) decoderFunc {
314 // map of json field name to struct field decoders

Callers 1

newTypeDecoderMethod · 0.95

Calls 2

typeDecoderMethod · 0.95
IndexMethod · 0.45

Tested by

no test coverage detected