現象

JSONパッケージで文字列をエンコードすると、HTML文字がエスケープされてしまうようです。

package main

import (
    "encoding/json"
    "fmt"
    "bytes"
)

func main() {
    data := "{'a': 'x < y'}"
    raw, _ := json.Marshal(data)
    fmt.Println(string(raw))
    //output: "{'a': 'x \u003c y'}" ← おそらく期待したものではないでしょう
}

解消方法

package main

import (
    "encoding/json"
    "fmt"
    "bytes"
)

func main() {
    data := "{'a': 'x < y'}"

    var buffer bytes.Buffer
    enc := json.NewEncoder(&buffer)
    enc.SetEscapeHTML(false)
    enc.Encode(data)
    fmt.Println(buffer.String())
    //output: "{'a': 'x < y'}"
}
0%