string.Format() 에 Curly Bracket을 사용할 때의 오류

[제목] string.Format() 에 Curly Bracket을 사용할 때의 오류

다음 C# 코드는 무엇이 잘못 되었을까?

string s = string.Format("{ \"Name\" : \"{0}\" }", name);

언뜻 아무 문제 없어 보이지만, 이 코드를 실행하면 다음과 같은 에러가 발생한다.

Input string was not in a correct format.

이중부호는 Escape되어 제대로 처리되었다. 문제는 처음과 끝부분의 Curly Bracket { 와 } 에 있다. string.Format() 의 서식 지시어 (Format Specifier) 에서 Curly Bracket은 Argument를 대체할 때 사용하기 때문에, C#은 처음 시작 브라켓 { 이후의 문자열에 대해 마치 Argument로 대체 처리해야 하는 것으로 잘못(?) 판단하는 것이다.

이 문제를 해결하기 위해 Curly Bracket을 Escape 해줘야 하는데, Curly Bracket은 - 다른 Escape 처럼 백슬래쉬를 사용하지 않고 - {{ 와 }} 처럼 Bracket을 두개 겹쳐 사용한다.
즉, 위의 코드 오류는 다음과 같이 수정될 수 있다.

string s = string.Format("{{ \"Name\" : \"{0}\" }}", name);

단순하지만, 찾아내는데 시간이 걸릴 수 있는 실수인 것 같다...



본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.