protected void asJson(final StringBuilder sb) { sb.append('{'); for (int i = 0; i < data.size(); i++) { if (i > 0) { sb.append(", "); } sb.append(Chars.DQUOTE); int start = sb.length(); sb.append(data.getKeyAt(i)); StringBuilders.escapeJson(sb, start); sb.append(Chars.DQUOTE).append(':').append(Chars.DQUOTE); start = sb.length(); ParameterFormatter.recursiveDeepToString(data.getValueAt(i), sb, null); StringBuilders.escapeJson(sb, start); sb.append(Chars.DQUOTE); } sb.append('}'); }
@Test public void escapeJsonCharactersISOControl() { String jsonValueNotEscaped = "{\"field\n1\":\"value" + (char) 0x8F + "_1\"}"; String jsonValueEscaped = "{\\\"field\\n1\\\":\\\"value\\u008F_1\\\"}"; StringBuilder sb = new StringBuilder(); sb.append(jsonValueNotEscaped); assertEquals(jsonValueNotEscaped, sb.toString()); StringBuilders.escapeJson(sb, 0); assertEquals(jsonValueEscaped, sb.toString()); }
@Test public void escapeJsonCharactersCorrectly() { String jsonValueNotEscaped = "{\"field\n1\":\"value_1\"}"; String jsonValueEscaped = "{\\\"field\\n1\\\":\\\"value_1\\\"}"; StringBuilder sb = new StringBuilder(); sb.append(jsonValueNotEscaped); assertEquals(jsonValueNotEscaped, sb.toString()); StringBuilders.escapeJson(sb, 0); assertEquals(jsonValueEscaped, sb.toString()); sb = new StringBuilder(); String jsonValuePartiallyEscaped = "{\"field\n1\":\\\"value_1\\\"}"; sb.append(jsonValueNotEscaped); assertEquals(jsonValueNotEscaped, sb.toString()); StringBuilders.escapeJson(sb, 10); assertEquals(jsonValuePartiallyEscaped, sb.toString()); }