@@ -526,10 +526,11 @@ func (p *s3Input) decodeJSON(decoder *json.Decoder, objectHash string, s3Info s3
526526 return nil
527527 }
528528
529- offset , err = p .jsonFieldsType (jsonFields , offset , objectHash , s3Info , s3Ctx )
529+ offsetNew , err : = p .jsonFieldsType (jsonFields , offset , objectHash , s3Info , s3Ctx )
530530 if err != nil {
531531 return err
532532 }
533+ offset = offsetNew
533534 }
534535}
535536
@@ -554,6 +555,27 @@ func (p *s3Input) jsonFieldsType(jsonFields interface{}, offset int, objectHash
554555 return offset , nil
555556 }
556557 case map [string ]interface {}:
558+ if p .config .ExpandEventListFromField != "" {
559+ textValues , ok := f [p .config .ExpandEventListFromField ]
560+ if ! ok {
561+ err := errors .Errorf ("key '%s' not found" , p .config .ExpandEventListFromField )
562+ p .logger .Error (err )
563+ return offset , err
564+ }
565+
566+ valuesConverted := textValues .([]interface {})
567+ for _ , textValue := range valuesConverted {
568+ offsetNew , err := p .convertJSONToEvent (textValue , offset , objectHash , s3Info , s3Ctx )
569+ if err != nil {
570+ err = errors .Wrapf (err , "convertJSONToEvent failed for '%s' from S3 bucket '%s'" , s3Info .key , s3Info .name )
571+ p .logger .Error (err )
572+ return offset , err
573+ }
574+ offset = offsetNew
575+ }
576+ return offset , nil
577+ }
578+
557579 offset , err := p .convertJSONToEvent (f , offset , objectHash , s3Info , s3Ctx )
558580 if err != nil {
559581 err = errors .Wrapf (err , "convertJSONToEvent failed for '%s' from S3 bucket '%s'" , s3Info .key , s3Info .name )
0 commit comments