如何将JSON.stringify输出中的\r\n替换为空格?
解决方法:在JSON序列化时替换换行符
你需要在将对象转为JSON字符串的过程中,把字符串里的\r\n换行符替换成空格,这里有两种简单实用的实现方式:
方法一:使用JSON.stringify的replacer参数
这是最简洁且支持嵌套对象的方案,利用JSON.stringify的第二个参数(replacer函数),在序列化每个值的时候自动处理字符串:
const originalObj = {a:"a\r\na", b:"b\r\nb"}; // 自定义replacer函数,替换字符串中的\r\n为空格 const jsonStr = JSON.stringify(originalObj, (key, value) => { if (typeof value === 'string') { // 全局替换所有\r\n为空格,如果需要处理单独的\n或\r,可以改成/[\r\n]/g return value.replace(/\r\n/g, ' '); } // 非字符串类型直接返回原值 return value; }); console.log(jsonStr); // 输出结果:{"a":"a a","b":"b b"}
方法二:先预处理对象属性再序列化
如果你的对象是扁平结构(没有嵌套对象),也可以先手动遍历处理每个属性值,再进行序列化:
const originalObj = {a:"a\r\na", b:"b\r\nb"}; // 遍历对象,替换每个字符串属性里的换行符 const processedObj = Object.fromEntries( Object.entries(originalObj).map(([key, val]) => [ key, typeof val === 'string' ? val.replace(/\r\n/g, ' ') : val ]) ); const jsonStr = JSON.stringify(processedObj); console.log(jsonStr); // 输出结果:{"a":"a a","b":"b b"}
原理说明
默认情况下,JSON.stringify会把字符串中的换行符(\r\n)转义为JSON字符串里的"\r\n",而你需要的是把这些换行符直接替换成空格,所以必须在序列化前或序列化过程中主动处理这些字符串内容。
内容的提问来源于stack exchange,提问作者Yituo
相关产品推荐
相关产品推荐

