我有这个JSON字符串:
{\"text\":\"Line 1\\nLine 2\",\"color\":\"black\"}
我这样做时可以解析它:
pg = JSON.parse(myJSONString.replace(/\\/g, ""));
但是当我访问pg.text时,值为:
Line 1nLine 2.
但我希望价值确切地说:
Line 1\nLine 2
JSON字符串在目标程序方面有效,目标程序将其解释为较大命令的一部分。实际上是Minecraft。 Minecraft将在第1行和第2行分开的线上呈现这一点。
但我正在制作一个需要按原样阅读\ n的编辑器。这将显示在html输入字段中。
就像这里的一些上下文是包含一些JSON代码的完整命令一样。
/summon zombie ~ ~1 ~ {HandItems:[{id:"minecraft:written_book",Count:1b,tag:{title:"",author:"",pages:["{\"text\":\"Line 1\\nLine 2\",\"color\":\"black\"}"]}},{}]}
答案 0 :(得分:0)
尝试在/ \ [1] / g处添加[1]但仅适用于单斜杠,但由于引用的json的类型我认为在解析时它是一个字符串,它会自动删除斜杠,所以你不要甚至需要使用替换。并且\ n将保持为。
var myString ='{\"text\":\"Line 1\\nLine 2\",\"color\":\"black\"}';
console.log(JSON.parse(myString.replace(/\\[1]/g, ""))); //adding [1] will remove single slash \\n -> \n
var myString =JSON.parse(myString.replace(/\\[1]/g, ""));
console.log(myString.text);
答案 1 :(得分:0)
你的字符串是无效的JSON,理想情况下你应该修改生成它的代码,或者联系它的提供者。
如果问题是总有一个反斜杠太多,那么你可以这样做:
// Need to escape the backslashes in this string literal to get the actual input:
var myJSONString = '{\\"text\\":\\"Line 1\\\\nLine 2\\",\\"color\\":\\"black\\"}';
console.log(myJSONString);
// Only replace backslashes that are not preceded by another:
var fixedJSON = myJSONString.replace(/([^\\])\\/g, "$1");
console.log(fixedJSON);
var pg = JSON.parse(fixedJSON);
console.log(pg);