diff --git a/datamodel/high/base/example.go b/datamodel/high/base/example.go index 3ac752c..e1985a4 100644 --- a/datamodel/high/base/example.go +++ b/datamodel/high/base/example.go @@ -60,7 +60,9 @@ func (e *Example) MarshalYAML() (interface{}, error) { // MarshalJSON will marshal this into a JSON byte slice func (e *Example) MarshalJSON() ([]byte, error) { var g map[string]any - e.Value.Decode(&g) + nb := high.NewNodeBuilder(e, e.low) + r := nb.Render() + r.Decode(&g) return json.Marshal(g) } diff --git a/datamodel/high/base/example_test.go b/datamodel/high/base/example_test.go index ca09223..2463679 100644 --- a/datamodel/high/base/example_test.go +++ b/datamodel/high/base/example_test.go @@ -5,6 +5,7 @@ package base import ( "context" + "encoding/json" "fmt" "strings" "testing" @@ -53,6 +54,21 @@ x-hack: code` // render the example as YAML rendered, _ := highExample.Render() assert.Equal(t, yml, strings.TrimSpace(string(rendered))) + + // render the example as JSON + var err error + rendered, err = json.Marshal(highExample) + assert.NoError(t, err) + + var j map[string]any + _ = json.Unmarshal(rendered, &j) + + assert.Equal(t, "an example", j["summary"]) + assert.Equal(t, "something more", j["description"]) + assert.Equal(t, "https://pb33f.io", j["externalValue"]) + assert.Equal(t, "code", j["x-hack"]) + assert.Equal(t, "a thing", j["value"]) + } func TestExtractExamples(t *testing.T) {