わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

jsonのエスケープ文字をエスケープする

wstring中のjsonのエスケープ文字をエスケープします。

エスケープする文字

  • "
  • "\"
  • "/"
  • "\b"
  • "\f"
  • "\n"
  • "\r"
  • "\t"
jsonのエスケープ文字をエスケープする
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
 
 
 
/*
    json文字列をエスケープする
        ESCAPED-CHAR = "¥”" / "¥¥" / "¥/" / "¥b" / "¥f" / "¥r" / "¥t"
*/
std::wstring EscapeJsonString
(
    std::wstring& oString
)
{
 
 
    std::wstring oRet;
    std::wstring::iterator ite    = oString.begin();
    std::wstring::iterator iteEnd = oString.end();
    while( ite != iteEnd ) {
        wchar_t wChar = *ite++;
        switch( wChar ) {
        case L'"':
            {
                oRet += L"¥¥¥"";
            }
            break;
 
 
        case L'¥¥':
            {
                oRet += L"¥¥¥¥";
            }
            break;
 
 
        case L'/':
            {
                oRet += L"¥¥/";
            }
            break;
 
 
        case '¥b':
            {
                oRet += L"¥¥b";
            }
            break;
 
 
        case '¥f':
            {
                oRet += L"¥¥f";
            }
            break;
 
 
        case '¥n':
            {
                oRet += L"¥¥n";
            }
            break;
 
 
        case '¥r':
            {
                oRet += L"¥¥r";
            }
            break;
 
 
        case '¥t':
            {
                oRet += L"¥¥t";
            }
            break;
 
 
        default:
            oRet += wChar;
            break;
        }
    }
    return( oRet );
}
 
 
 
/*
    JSONのエスケープ文字をエスケープする
*/
int _tmain
(
      int argc
    , _TCHAR* argv[]
)
{
    /*
        std::wcoutのロケールを設定
         これを設定するだけで、std::wcoutで日本語が表示される
         ようになります。
    */
    std::wcout.imbue( std::locale( "", std::locale::ctype ) );
 
    // 変換対象の文字列
    std::wstring strText = L"¥"string¥"-yen¥¥-/-¥b-¥f-¥r-¥t-test";
 
    // JSON文字列のエスケープ
    std::wstring strResult = EscapeJsonString( strText );
 
    // 変換結果を表示
    std::wcout << strResult.c_str() << std::endl;
 
    // 正常終了
    return( 0 );
}

実行結果

\"string\"-yen\\-\/-\b-\f-\r-\t-test






わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。