Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSON/YAML tag uses "omitempty" as the field name #5868

Open
Vasco-jofra opened this issue Feb 20, 2025 · 1 comment
Open

JSON/YAML tag uses "omitempty" as the field name #5868

Vasco-jofra opened this issue Feb 20, 2025 · 1 comment
Labels
kind/bug Categorizes issue or PR as related to a bug. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@Vasco-jofra
Copy link

Vasco-jofra commented Feb 20, 2025

What happened?

Hi! While doing a broad search for this pattern, I noticed that you use "omitempty" as the name of the Replacements field in the ReplacementTransformerPlugin structure.

Replacements []types.Replacement `json:"omitempty" yaml:"omitempty"`

Instead, I believe you wanted to write ",omitempty" to keep the same name but omit when empty, although, in this structure, it might conflict with the name of the ReplacementList field.

What did you expect to happen?

How can we reproduce it (as minimally and precisely as possible)?

You can test this behavior with this simple Go program:

package main

import (
	"encoding/json"
	"fmt"
)

type ReplacementTransformerPlugin struct {
	ReplacementList []string `json:"replacements,omitempty" yaml:"replacements,omitempty"`
	Replacements    []string `json:"omitempty" yaml:"omitempty"`
}

func main() {
	u := ReplacementTransformerPlugin{}
	_ = json.Unmarshal([]byte(`{"replacements": ["replacement_list_1", "replacement_list_2"], "omitempty": ["replacement_1", "replacement_2"]}`), &u)
	fmt.Printf("Result: %#v\n", u)
	// Result: main.ReplacementTransformerPlugin{ReplacementList:[]string{"replacement_list_1", "replacement_list_2"}, Replacements:[]string{"replacement_1", "replacement_2"}}
}

As you can see by the result, the omitempty key in the JSON string gets unmarshaled to the Replacements field.

Expected output

No response

Actual output

No response

Kustomize version

latest

Operating system

None

@Vasco-jofra Vasco-jofra added the kind/bug Categorizes issue or PR as related to a bug. label Feb 20, 2025
@k8s-ci-robot k8s-ci-robot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Feb 20, 2025
@koba1t
Copy link
Member

koba1t commented Feb 27, 2025

I can agree that it is a bug.
This missing tag was introduced at #3737.

/triage accepted

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Feb 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Categorizes issue or PR as related to a bug. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests

3 participants