diff --git a/pkg/stanza/operator/parser/json/json.go b/pkg/stanza/operator/parser/json/config.go similarity index 64% rename from pkg/stanza/operator/parser/json/json.go rename to pkg/stanza/operator/parser/json/config.go index b5e278f551d9..42595239f466 100644 --- a/pkg/stanza/operator/parser/json/json.go +++ b/pkg/stanza/operator/parser/json/config.go @@ -4,13 +4,9 @@ package json // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/parser/json" import ( - "context" - "fmt" - jsoniter "github.com/json-iterator/go" "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" ) @@ -50,29 +46,3 @@ func (c Config) Build(logger *zap.SugaredLogger) (operator.Operator, error) { json: jsoniter.ConfigFastest, }, nil } - -// Parser is an operator that parses JSON. -type Parser struct { - helper.ParserOperator - json jsoniter.API -} - -// Process will parse an entry for JSON. -func (j *Parser) Process(ctx context.Context, entry *entry.Entry) error { - return j.ParserOperator.ProcessWith(ctx, entry, j.parse) -} - -// parse will parse a value as JSON. -func (j *Parser) parse(value any) (any, error) { - var parsedValue map[string]any - switch m := value.(type) { - case string: - err := j.json.UnmarshalFromString(m, &parsedValue) - if err != nil { - return nil, err - } - default: - return nil, fmt.Errorf("type %T cannot be parsed as JSON", value) - } - return parsedValue, nil -} diff --git a/pkg/stanza/operator/parser/json/parser.go b/pkg/stanza/operator/parser/json/parser.go new file mode 100644 index 000000000000..429a49c6ecca --- /dev/null +++ b/pkg/stanza/operator/parser/json/parser.go @@ -0,0 +1,40 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package json // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/parser/json" + +import ( + "context" + "fmt" + + jsoniter "github.com/json-iterator/go" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" +) + +// Parser is an operator that parses JSON. +type Parser struct { + helper.ParserOperator + json jsoniter.API +} + +// Process will parse an entry for JSON. +func (p *Parser) Process(ctx context.Context, entry *entry.Entry) error { + return p.ParserOperator.ProcessWith(ctx, entry, p.parse) +} + +// parse will parse a value as JSON. +func (p *Parser) parse(value any) (any, error) { + var parsedValue map[string]any + switch m := value.(type) { + case string: + err := p.json.UnmarshalFromString(m, &parsedValue) + if err != nil { + return nil, err + } + default: + return nil, fmt.Errorf("type %T cannot be parsed as JSON", value) + } + return parsedValue, nil +} diff --git a/pkg/stanza/operator/parser/json/json_test.go b/pkg/stanza/operator/parser/json/parser_test.go similarity index 100% rename from pkg/stanza/operator/parser/json/json_test.go rename to pkg/stanza/operator/parser/json/parser_test.go