For example I have following code:
var obj = {
    name: "alex",
    lastname: "aaa",
    portfolio: {
        stocks: "TSLA, BA"
    },
    comments: "some\nrandom\ndescription"
};
console.log("JSON OUT:\n" + obj.comments);
console.log("STRING OUT:\n" + JSON.stringify(obj, null, 2));Which results in:
JSON OUT:
some
random
description
STRING OUT:
{
  "name": "alex",
  "lastname": "aaa",
  "portfolio": {
    "stocks": "TSLA, BA"
  },
  "comments": "some\nrandom\ndescription"
}
As you can see it escapes '\n' characters in comments value. In other words, it replaces '\n' with '\\n' in resulting string.
Is there any possibility how I could avoid this behavior?
I tried using replace function in stringify() 2nd parameter which does something like that return v.replace(/\\n/g, "\n"); but it newer worked (probably because original string contains just \n and final string gets screwed up after replace function finishes).
There is also another solution with involves .replace(/\\n/g, "\n") on final string, but it screw up all blank spaces which stringify() function adds:
{
  "name": "alex",
  "lastname": "aaa",
  "portfolio": {
    "stocks": "TSLA, BA"
  },
  "comments": "some
random
description"
}
But I want well-formatted human-readable string in output after JSON.stringify() call and I don't need to convert it back to JSON later:
{
  "name": "alex",
  "lastname": "aaa",
  "portfolio": {
    "stocks": "TSLA, BA"
  },
  "comments": "some
  random
  description"
}
 
    