GoはUTF-8で解釈するので、多分大丈夫だろうと思ったけど、試したことはなかった。
質問されたので試してみた。
package main
import (
"fmt"
"encoding/json"
)
var tj = `{
"english": "foo",
"日本語": "テスト",
"훈민정음": "안녕하세요",
"اللغة العربية": "صباح الخير"
}`
type testStruct struct {
English string `json:"english"`
Japanese string `json:"日本語"`
Korean string `json:"훈민정음"`
Arabic string `json:"اللغة العربية"`
}
func main() {
var v testStruct
json.Unmarshal([]byte(tj), &v)
fmt.Printf("%#v\n", v)
b, _ := json.Marshal(v)
fmt.Printf("%s\n", string(b))
}
結果:できた。
main.testStruct{English:"foo", Japanese:"テスト", Korean:"안녕하세요", Arabic:"صباح الخير"}
{"english":"foo","日本語":"テスト","훈민정음":"안녕하세요","اللغة العربية":"صباح الخير"}
韓国大好きっ子だと思われないようにアラビア語もやってみたけど、対応してた。すごい!!
Go PlayGroundでやるとアラビア語はきちんと右から左になるようになっていた。
すごいけど、見づらい!!
補足
全角記号がタグに含まれてると解釈してくれないもよう。
バグなのか仕様なのかは、関連事項が記載されているドキュメントが見つからなかったので不明