У меня есть строки, которые я хотел бы преобразовать в JSON. Здесь используется кодировка / json, другие пакеты не пробовал.
Строки могут содержать символы новой строки и другие вещи, которые нарушают JSON, если они сохранены как есть.
Он работает, если я передаю строковый литерал - он добавляет обратную косую черту перед обратной косой чертой. Это не сработает, если я просто передам обычную строку. Я не могу понять, есть ли способ использовать переменные, содержащие строковые литералы.
изменить: как уже указывалось, это не те же значения, и я вроде понимаю это, но это не помогает мне решить мою проблему.
Пример кода:
package main
import (
"fmt"
"encoding/json"
)
func main() {
type Test struct {
Input string
}
regularString := Test{"asd\nqwe"}
out, err := json.Marshal(regularString)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(out))
literalString := Test{`asd\nqwe`}
out, err = json.Marshal(literalString )
if err != nil {
fmt.Println(err)
}
fmt.Println(string(out))
}
Println
, которые показывают строки, кодируемые на игровой площадке go здесь. Обратите внимание, что в первом есть настоящая новая строка, а во втором - \ n, который будет закодирован как \\ n в json, чтобы предотвратить его интерпретацию как новую строку. - person Hugh   schedule 14.11.2018