Go 言語で ensure_ascii した JSON をつくる
code:python
>> import json
>> json.dumps({"ほげ": "ふが"})
{"\u307b\u3052": "\u3075\u304c"}
>> json.dumps({"ほげ": "ふが"}, ensure_ascii=False)
{"ほげ": "ふが"}
Pythonだとデフォルトでマルチバイト文字列を ascii-safe にしてくれる
GoだとデフォルトではマルチバイトのままのJSONが生成される
ascii-safeにするには独自の型を定義して、変換方法を追加してあげればいいっぽい
code:go
type utf8String string
func (s utf8String) MarshalJSON() ([]byte, error) {
return []byte(strconv.QuoteToASCII(string(s))), nil
}