Skip to content

SetEscapeHTML don't work for pointer types #237

Open
@Hamper

Description

@Hamper
type T struct {
	A map[string]interface{}
	B map[string]string
	C string
	D Tx
	E *string
	F *Tx
}

type Tx struct {
	A map[string]interface{}
	B map[string]string
	C string
}

func main() {
	s := "test&test"
	x := T{
		A: map[string]interface{}{
			"test": "test&test",
		},
		B: map[string]string{
			"test": "test&test",
		},
		C: "test&test",
		D: Tx{
			A: map[string]interface{}{
				"test": "test&test",
			},
			B: map[string]string{
				"test": "test&test",
			},
			C: "test&test",
		},
		E: &s,
		F: &Tx{
			A: map[string]interface{}{
				"test": "test&test",
			},
			B: map[string]string{
				"test": "test&test",
			},
			C: "test&test",
		},
	}

	buffer := &bytes.Buffer{}
	encoder := json.NewEncoder(buffer)
	encoder.SetEscapeHTML(false)
	_ = encoder.Encode(x)
	fmt.Println(buffer.String())
}

With ffjson:

{"A":{"test":"test&test"},"B":{"test":"test&test"},"C":"test&test","D":{"A":{"test":"test&test"},"B":{"test":"test&test"},"C":"test&test"},"E":"test&test","F":{"A":{"test":"test\u0026test"},"B":{"test":"test\u0026test"},"C":"test\u0026test"}}

Without ffjson:

{"A":{"test":"test&test"},"B":{"test":"test&test"},"C":"test&test","D":{"A":{"test":"test&test"},"B":{"test":"test&test"},"C":"test&test"},"E":"test&test","F":{"A":{"test":"test&test"},"B":{"test":"test&test"},"C":"test&test"}}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions