diff --git a/internal/jsonview/staticdisplay.go b/internal/jsonview/staticdisplay.go index 239562f..b5dd1e8 100644 --- a/internal/jsonview/staticdisplay.go +++ b/internal/jsonview/staticdisplay.go @@ -100,10 +100,11 @@ func formatJSONObject(result gjson.Result, indent, width int) string { if len(keys) == 0 { return nullValueStyle.Render("(empty)") } + values := result.Map() var items []string for _, key := range keys { - value := result.Get(key.Str) + value := values[key.Str] keyStr := getIndent(indent) + keyStyle.Render(sanitizeTerminalString(key.Str)+":") // If item will be a one-liner, put it inline after the key, otherwise // it starts with a newline and goes below the key. diff --git a/internal/jsonview/staticdisplay_literal_keys_test.go b/internal/jsonview/staticdisplay_literal_keys_test.go new file mode 100644 index 0000000..d2d965c --- /dev/null +++ b/internal/jsonview/staticdisplay_literal_keys_test.go @@ -0,0 +1,18 @@ +package jsonview + +import ( + "testing" + + "github.com/stretchr/testify/require" + "github.com/tidwall/gjson" +) + +func TestStaticDisplayUsesLiteralObjectKeys(t *testing.T) { + t.Parallel() + + result := gjson.Parse(`{"a.b":"literal-value","a":{"b":"nested-value"}}`) + out := formatJSON(result, 80) + + require.Contains(t, out, "literal-value") + require.Contains(t, out, "nested-value") +}