From 80e60847fb5d12f6a54fae782cb643a1772c38b6 Mon Sep 17 00:00:00 2001 From: Joe Mooring Date: Mon, 25 May 2026 17:44:50 -0700 Subject: [PATCH] config: Preserve intentionally empty maps Closes #14944 --- parser/lowercase_camel_json.go | 14 +++++++++----- testscripts/commands/config.txt | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/parser/lowercase_camel_json.go b/parser/lowercase_camel_json.go index 7d6afc919..4749aff63 100644 --- a/parser/lowercase_camel_json.go +++ b/parser/lowercase_camel_json.go @@ -107,29 +107,33 @@ func (c ReplacingJSONMarshaller) MarshalJSON() ([]byte, error) { if err != nil { return nil, err } - var removeZeroVAlues func(m map[string]any) - removeZeroVAlues = func(m map[string]any) { + var removeZeroValues func(m map[string]any) + removeZeroValues = func(m map[string]any) { for k, v := range m { if !hreflect.IsMap(v) && !hreflect.IsTruthful(v) { delete(m, k) } else { switch vv := v.(type) { case map[string]any: - removeZeroVAlues(vv) + if len(vv) == 0 { + // Keep intentionally empty map. + continue + } + removeZeroValues(vv) if len(vv) == 0 { delete(m, k) } case []any: for _, vvv := range vv { if m, ok := vvv.(map[string]any); ok { - removeZeroVAlues(m) + removeZeroValues(m) } } } } } } - removeZeroVAlues(m) + removeZeroValues(m) converted, err = json.Marshal(m) } diff --git a/testscripts/commands/config.txt b/testscripts/commands/config.txt index f920ef209..480f1135b 100644 --- a/testscripts/commands/config.txt +++ b/testscripts/commands/config.txt @@ -6,6 +6,7 @@ stdout 'Display project configuration' hugo config stdout 'baseurl = .https://example.com/' +stdout '\[contenttypes\.' hugo config --format json stdout '\"baseurl\": \"https://example.com/\",'