{"ScriptPreparationCode":"var object = {\r\n str_key: \u0027this is \u0022a \\nstring\u0027,\r\n num_key: 42,\r\n bool_key: true,\r\n array_key: [1, 2, 3]\r\n};\r\n\r\nfunction escapeForJSON(string) {\r\n let result = \u0022\u0022;\r\n const length = string.length;\r\n for (let i = 0; i !== length; \u002B\u002Bi) {\r\n // Obviously missing a few other characters to escape\r\n if (string.charAt(i) == \u0027\u0022\u0027) {\r\n result \u002B= \u0027\\\\\u0022\u0027;\r\n } else {\r\n result \u002B= string.charAt(i);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction stringConcat(obj) {\r\n let result = \u0027{\u0022str_key\u0022:\u0022\u0027;\r\n result \u002B= escapeForJSON(obj.str_key);\r\n result \u002B= \u0027\u0022,\u0022num_key\u0022:\u0027;\r\n result \u002B= obj.num_key.toString();\r\n result \u002B= \u0027,\u0022bool_key\u0022:\u0027;\r\n result \u002B= obj.bool_key.toString();\r\n result \u002B= \u0027,\u0022array_key\u0022:[\u0027;\r\n const length = obj.array_key.length;\r\n if (length \u003E 0) {\r\n result \u002B= obj.array_key[0].toString();\r\n }\r\n for (let i = 1; i \u003C length; \u002B\u002Bi) {\r\n result \u002B= \u0027,\u0027;\r\n result \u002B= obj.array_key[i].toString();\r\n }\r\n result \u002B= \u0027]}\u0027;\r\n return result;\r\n}","TestCases":[{"Name":"JSON.stringify","Code":"JSON.stringify(object);","IsDeferred":false},{"Name":"String concat","Code":"stringConcat(object);","IsDeferred":false}]}