わびさびサンプルソース

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

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

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

エスケープする文字

  • "
  • "\"
  • "/"
  • "\b"
  • "\f"
  • "\n"
  • "\r"
  • "\t"
#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などのプログラムのサンプルコードやフリーソフトを提供します。