posted by 구로공돌이 2025. 9. 2. 09:43

public class JsonStringEscaper {

    /**
     * JSON 표준에 맞춰 문자열을 안전하게 이스케이프 처리합니다.
     * (성능 및 안정성 개선 버전)
     *
     * @param str 이스케이프할 원본 문자열
     * @return 이스케이프 처리된 문자열
     */
    public static String escapeJsonStringRobust(String str) {
        if (str == null) {
            return null;
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            switch (c) {
                case '"':
                    sb.append("\\\"");
                    break;
                case '\\':
                    sb.append("\\\\");
                    break;
                case '\b':
                    sb.append("\\b");
                    break;
                case '\f':
                    sb.append("\\f");
                    break;
                case '\n':
                    sb.append("\\n");
                    break;
                case '\r':
                    sb.append("\\r");
                    break;
                case '\t':
                    sb.append("\\t");
                    break;
                default:
                    sb.append(c);
            }
        }
        return sb.toString();
    }
}