カテゴリ: Go言語 更新日: 2025/10/29

Go言語で文字列をJSONに含めるときのエスケープ処理を初心者向けに解説

Go言語の文字列をJSONに含める際のエスケープ処理
Go言語の文字列をJSONに含める際のエスケープ処理

先生と生徒の会話形式で理解しよう

生徒

「Goで文字列をJSONに変換するとき、エスケープって必要ですか?」

先生

「はい、必要です。JSONは文字列の中で特定の文字、例えばダブルクォートやバックスラッシュを特別扱いします。そのまま文字列を入れるとJSONの構造が壊れてしまうことがあります。」

生徒

「なるほど。じゃあ、Goではどうやって安全にJSONに文字列を入れるんですか?」

先生

「Goでは標準パッケージのencoding/jsonを使うと、自動でエスケープしてくれます。手動で行う必要はほとんどありません。」

生徒

「自動でやってくれるなら安心ですね。でも、どんな文字がエスケープされるんですか?」

先生

「JSONでエスケープされる代表的な文字は、ダブルクォート、バックスラッシュ、改行、タブなどです。例えば文字列に\"や\nが含まれている場合、自動的に\\\"や\\nに変換されます。」

1. Go言語で文字列をJSONに変換する基本

1. Go言語で文字列をJSONに変換する基本
1. Go言語で文字列をJSONに変換する基本

Go言語で文字列をJSONに含めるには、encoding/jsonパッケージのMarshal関数を使います。この関数は文字列をJSON形式に変換し、必要な文字を自動でエスケープしてくれます。


package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    str := "Go言語で\"JSON\"を扱う\n例です"
    jsonData, _ := json.Marshal(str)
    fmt.Println(string(jsonData))
}

"Go言語で\"JSON\"を扱う\n例です"

この例では、文字列内のダブルクォートと改行が自動でエスケープされているのがわかります。

2. 構造体とJSONの組み合わせ

2. 構造体とJSONの組み合わせ
2. 構造体とJSONの組み合わせ

複数のデータをJSONに変換する場合は、構造体を使います。構造体内の文字列フィールドもMarshalで安全にエスケープされます。


package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string `json:"name"`
    Comment string `json:"comment"`
}

func main() {
    p := Person{
        Name:    "太郎",
        Comment: "Go言語は\"便利\"です\n初心者にも優しい",
    }
    jsonData, _ := json.Marshal(p)
    fmt.Println(string(jsonData))
}

{"name":"太郎","comment":"Go言語は\"便利\"です\n初心者にも優しい"}

構造体を使うことで、複数の文字列や数値をまとめてJSONに変換できます。文字列内の特殊文字も自動でエスケープされるので安心です。

3. JSONエスケープの重要性

3. JSONエスケープの重要性
3. JSONエスケープの重要性

文字列をそのままJSONに含めると、JSONの構造が壊れたり、予期せぬエラーが発生することがあります。特にダブルクォートや改行、バックスラッシュを含む場合は、必ずMarshalでエスケープ処理を行いましょう。

4. エスケープ処理の手動操作

4. エスケープ処理の手動操作
4. エスケープ処理の手動操作

通常はMarshalで自動処理されますが、文字列だけをエスケープしたい場合はjson.HTMLEscapejson.Marshalでバイトスライスに変換して操作する方法もあります。これは高度な操作ですが、特殊文字の処理をカスタマイズしたい場合に便利です。

5. 実務での活用ポイント

5. 実務での活用ポイント
5. 実務での活用ポイント

API通信やファイル保存などでJSONを扱う際、文字列のエスケープを意識することは重要です。Go言語のencoding/jsonパッケージを使えば、エスケープ処理を自動で行えるため、安全にデータをやり取りできます。また、文字列を直接結合してJSONを作るのは避け、必ずMarshalを使う習慣をつけましょう。

関連記事:
カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!