summaryrefslogtreecommitdiff
path: root/AK/JsonObject.h
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-11-02 12:56:36 +0100
committerAndreas Kling <kling@serenityos.org>2020-11-02 12:56:36 +0100
commit5e164052f6432d7da8793994cc4eafce6538cb14 (patch)
treed3ef7f56eb2ac30477ec1be7d335c855af1ea8a5 /AK/JsonObject.h
parentee21a724c75e5d398c9c227e2aec64452f550749 (diff)
downloadserenity-5e164052f6432d7da8793994cc4eafce6538cb14.zip
AK+Kernel: Escape JSON keys & values
Grab the escaping logic from JSON string value serialization and use it for serializing all keys and values. Fixes #3917.
Diffstat (limited to 'AK/JsonObject.h')
-rw-r--r--AK/JsonObject.h27
1 files changed, 1 insertions, 26 deletions
diff --git a/AK/JsonObject.h b/AK/JsonObject.h
index 0cdff4fa54..b8ae907b39 100644
--- a/AK/JsonObject.h
+++ b/AK/JsonObject.h
@@ -158,33 +158,8 @@ inline void JsonValue::serialize(Builder& builder) const
{
switch (m_type) {
case Type::String: {
- auto size = m_value.as_string->length();
builder.append("\"");
- for (size_t i = 0; i < size; i++) {
- char ch = m_value.as_string->characters()[i];
- switch (ch) {
- case '\e':
- builder.append("\\u001B");
- break;
- case '\b':
- builder.append("\\b");
- break;
- case '\n':
- builder.append("\\n");
- break;
- case '\t':
- builder.append("\\t");
- break;
- case '\"':
- builder.append("\\\"");
- break;
- case '\\':
- builder.append("\\\\");
- break;
- default:
- builder.append(ch);
- }
- }
+ builder.append_escaped_for_json({ m_value.as_string->characters(), m_value.as_string->length() });
builder.append("\"");
} break;
case Type::Array: