Javascript JSON.parse函数,带有Ajax请求和\\";新行转义字符
编辑:json文件有以下行:Javascript JSON.parse函数,带有Ajax请求和\\";新行转义字符,javascript,json,ajax,escaping,Javascript,Json,Ajax,Escaping,编辑:json文件有以下行: {"pd":"ciao \\n ste"} 我正在请求一个带有ajax调用的有效json文件。 然后,解析结果 我不明白json文件中的“\\n”转义新行字符是怎么回事 如果我给JSON.parse提供相同的值,它会给我不同的结果 var result = JSON.parse(data); console.log(result); var result2 = JSON.parse('{"pd":"ciao \\n ste"}'); console.log(res
{"pd":"ciao \\n ste"}
我正在请求一个带有ajax调用的有效json文件。然后,解析结果 我不明白json文件中的“\\n”转义新行字符是怎么回事 如果我给JSON.parse提供相同的值,它会给我不同的结果
var result = JSON.parse(data);
console.log(result);
var result2 = JSON.parse('{"pd":"ciao \\n ste"}');
console.log(result2);
据我所知,这可能与之前的javascript和之后的解析正在转义(或不转义)字符串有关
问题是我也不明白这一点:
result = result.replace(/\\n/g, "<br />");
result=result.replace(/\\n/g,“
”);
我也必须逃离正则表达式本身吗
Sum:我想使用通过Ajax加载的.json文件。
我希望JSON.parse完成他的工作,并取消显示返回换行符的“\\n”。多亏了Bergi给我的答案,我现在知道JSON.parse已经完成了他的工作。 这是我的错,我提供了一个json文件,里面有“\\n”而不是“\n” 这里是一个更新的jsbin,您可以看到现在JSON.parse在不同的场景中起着相同的作用。
反斜杠在JSON中转义。在JS字符串文本和JS正则表达式文本中,如果您想在解析的输出中获得反斜杠,您需要对其进行双重转义(
JSON.parse(\\\\”)
)。什么是数据?如果服务器没有发送预期的值,您应该修复服务器,而不是尝试在客户端进行一些替换。当我检查chrome控制台中的数据变量时,我看到它保存着与.json文件完全相同的内容。我不明白为什么json中的“\\n”没有(在json.parse(data)之后)转换成新行字符,而是转换成“\n”。相反,如果您尝试在javascript中直接使用json.parse字符串(而不是加载它trhough ajax)var result2=json.parse(“{”pd:“ciao\\n ste”});它确实转换了“\\n”是的,但是字符串文字与JSON文件的内容不同(因为字符串文字转义),因此结果彼此不同。在该JSON(或真正的换行符)中应该有\n
,而不是\\n
。您可以在客户端(data.replace(/\\\\n/,“\\n”)删除它
),但您确实应该在服务器端解决此问题。