/ / ¿Evitar que json.Marshal de Go coaccione una cadena a unicode utf-8 válido? ir

¿Impedir que json.Marshal de Go coaccione una cadena a un unicode utf-8 válido? ir

Estoy tratando de PUBLICAR algunos JSON en un servidor usando Ir, donde los caracteres especiales como ampersand deben existir intactos en la cadena JSON que estoy enviando.

http://play.golang.org/p/bPt9kl88-y

package main

import (
"fmt"
"encoding/json"
)

func main() {

type TransactionStatement struct {
Query      string
}

statement := &TransactionStatement{
Query:       "my query with this & that",
}
data, _ := json.Marshal(statement)

fmt.Printf("> %v", string(data))
}

Ir "s json.Marshal está convirtiendo ciertos caracteres como "&" a unicode. Lo cual es genial:

Los valores de cadena codifican como cadenas JSON forzadas autf-8 válido, reemplazando bytes no válidos con la runa de reemplazo Unicode. Los corchetes angulares "<" y ">" se escapan a "u003c" y "u003e" para evitar que algunos navegadores malinterpreten la salida JSON como HTML. El símbolo "&" también se escapa a "u0026" por la misma razón. Blockquote

Puede sonar ridículo pero el JSON que estoy enviandoes para una consulta de base de datos utilizando un punto final RESTful, donde esta cadena literal se utilizará para realizar una consulta de base de datos de texto libre, por lo que no puedo usar unicode ya que se interpreta literalmente.

Entonces, ¿hay alguna manera de evitar esta conversión a Unicode? ¿O tendré que deshacer estos reemplazos? después se ha terminado la clasificación?

Gracias

Respuestas

2 para la respuesta № 1

Me acabo de dar cuenta de que después de publicar, otros personajes también están codificados en Unicode y de hecho están funcionando.


0 para la respuesta № 2

Puede elegir no codificar si lo desea: https://golang.org/pkg/encoding/json/#Encoder.SetEscapeHTML

https://play.golang.org/p/gfy1WaDrEIH