summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2019-04-26 17:22:14 -0400
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2019-05-11 14:50:16 -0400
commit27dd7882d3ff006628830b63c5ddfd83ff1a2909 (patch)
treedc751d78977dfa58dfaa6e156041c8fb4ceb37d5
parent3241ec32dbab251b31d3ea75f58d45259941f7da (diff)
downloadmongo-27dd7882d3ff006628830b63c5ddfd83ff1a2909.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 957d018a880..6d0378296cc 100644
--- a/src/mongo/shell/types.js
+++ b/src/mongo/shell/types.js
@@ -602,47 +602,8 @@ tojson = function(x, indent, nolint) {
indent = "";
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;