Escape Unicode символов в JSON кодировать Голанг - PullRequest
0 голосов
/ 12 февраля 2019

Учитывая следующий пример:

func main() {
    buf := new(bytes.Buffer)
    enc := json.NewEncoder(buf)
    toEncode := []string{"hello", "wörld"}
    enc.Encode(toEncode)
    fmt.Println(buf.String())
}

Я хотел бы, чтобы вывод был представлен с экранированными символами Юникода:

["hello", "w \ u00f6rld"]

Вместо:

["hello", "wörld"]

Я попытался написать функцию для цитирования Unicodeсимволов, использующих strconv.QuoteToASCII, и передают результаты в Encode(), однако это приводит к двойному экранированию:

func quotedUnicode(data []string) []string {
    for index, element := range data {                                                
                quotedUnicode := strconv.QuoteToASCII(element) 
                // get rid of additional quotes                         
                quotedUnicode = strings.TrimSuffix(quotedUnicode, "\"") 
                quotedUnicode = strings.TrimPrefix(quotedUnicode, "\"") 
                data[index] = quotedUnicode                               
         }                                                                                                                                    
         return data                                                             
}  

["hello", "w \\ u00f6rld"]

Как я могу убедиться, что выходные данные из json.Encode содержат правильно экранированные символы Unicode?

...