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 № 1Me 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