diff options
author | Andreas Kling <kling@serenityos.org> | 2020-11-02 12:56:36 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-11-02 12:56:36 +0100 |
commit | 5e164052f6432d7da8793994cc4eafce6538cb14 (patch) | |
tree | d3ef7f56eb2ac30477ec1be7d335c855af1ea8a5 /AK/JsonObject.h | |
parent | ee21a724c75e5d398c9c227e2aec64452f550749 (diff) | |
download | serenity-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.h | 27 |
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: |