summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2019-04-26 17:22:14 -0400
committerSiyuan Zhou <visualzhou@gmail.com>2019-05-13 14:25:19 -0400
commit7c958ef34989959984983126be0ff3bc9513d489 (patch)
treecf6b0b605da8f11810599d369cd91544d565cecc
parent07d92d96d8a7f949a578b6606103a59cb7060e49 (diff)
downloadmongo-7c958ef34989959984983126be0ff3bc9513d489.tar.gz
SERVER-40866 Use JSON.stringify() to serialize string in tojson()
(cherry picked from commit b877bd0172b613e77365f29886d359e5230f1a3e)
-rw-r--r--src/mongo/shell/types.js43
1 files changed, 2 insertions, 41 deletions
diff --git a/src/mongo/shell/types.js b/src/mongo/shell/types.js
index af216eed661..80c033b7b03 100644
--- a/src/mongo/shell/types.js
+++ b/src/mongo/shell/types.js
@@ -606,47 +606,8 @@ tojson = function(x, indent, nolint, depth) {
}
switch (typeof x) {
- case "string": {
- var out = new Array(x.length + 1);
- out[0] = '"';
- for (var i = 0; i < x.length; i++) {
- switch (x[i]) {
- case '"':
- out[out.length] = '\\"';
- break;
- case '\\':
- out[out.length] = '\\\\';
- break;
- case '\b':
- out[out.length] = '\\b';
- break;
- case '\f':
- out[out.length] = '\\f';
- break;
- case '\n':
- out[out.length] = '\\n';
- break;
- case '\r':
- out[out.length] = '\\r';
- break;
- case '\t':
- out[out.length] = '\\t';
- break;
-
- default: {
- var code = x.charCodeAt(i);
- if (code < 0x20) {
- out[out.length] =
- (code < 0x10 ? '\\u000' : '\\u00') + code.toString(16);
- } else {
- out[out.length] = x[i];
- }
- }
- }
- }
-
- return out.join('') + "\"";
- }
+ case "string":
+ return JSON.stringify(x);
case "number":
case "boolean":
return "" + x;