-
Notifications
You must be signed in to change notification settings - Fork 18.3k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.
Milestone
Description
If using encoding/json.NewEncoder
with SetEscapeHTML(false)
an a field, that has the string
option in the struct tags set, the HTML content gets escaped anyways.
What version of Go are you using (go version
)?
$ go version go version go1.12.5 linux/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/home/lubr/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/lubr/go" GOPROXY="" GORACE="" GOROOT="/home/lubr/.gvm/versions/go1.12.5.linux.amd64" GOTMPDIR="" GOTOOLDIR="/home/lubr/.gvm/versions/go1.12.5.linux.amd64/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build368255501=/tmp/go-build -gno-record-gcc-switches"
What did you do?
package main
import (
"encoding/json"
"os"
)
type Foo struct {
Bar string `json:"bar,string"`
}
func main() {
j := Foo{
Bar: `<html>foobar</html>`,
}
e := json.NewEncoder(os.Stdout)
e.SetEscapeHTML(false)
_ = e.Encode(j)
}
What did you expect to see?
$ go run main.go
{"bar":"\"<html>foobar</html>\""}
What did you see instead?
$ go run main.go
{"bar":"\"\\u003chtml\\u003efoobar\\u003c/html\\u003e\""}
#34127 does fix this issue
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.