当它是一个对象时,与转义字符有关的Javascript会变成两次
我想通过转义“/”用一个转义字符保存json对象,所以我使用字符串替换并将字符串转换为“/” 然后,我将其分配给一个对象变量,并尝试将其自动转换为“\/” 我的初始数据集是base64字符串 这是我的代码片段 示例字符串:当它是一个对象时,与转义字符有关的Javascript会变成两次,javascript,node.js,string,escaping,Javascript,Node.js,String,Escaping,我想通过转义“/”用一个转义字符保存json对象,所以我使用字符串替换并将字符串转换为“/” 然后,我将其分配给一个对象变量,并尝试将其自动转换为“\/” 我的初始数据集是base64字符串 这是我的代码片段 示例字符串:data=“/9j/4AAQSKZJRGABAQAAAQABAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0” 输出 结果1 "\/9j\/4AAQSkZJRgABAQAAA
data=“/9j/4AAQSKZJRGABAQAAAQABAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0”
输出
结果1
"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/\/gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0"
结果2
{
id :1
data : "\\/9j\\/4AAQSkZJRgABAQAAAQABAAD\\/\\/gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0"
}
我想要的是
{
id :1
data : "\/9j\/4AAQSkZJRgABAQAAAQABAAD\/\/gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0"
}
这里工作很好。无法在评论中共享答案,请在此处共享 编辑:在新数据上再添加一张图片;
您遇到的问题是,
console.log
以不同的方式为您格式化字符串。数据本身没有改变
当console.log
显示对象时,它会显示数据的完整内部表示,其中包括转义字符。当它格式化为字符串时,将显示字符,而不是其转义形式
考虑REPL中的这个小例子:
> let x = "\\/abc\\/"
'\\/abc\\/' <--- first character is an escaped backslash "\\"
> let y = {x: x}
{ x: '\\/abc\\/' } <--- first character in y.x is still an escaped backslash
> console.log(y)
{ x: '\\/abc\\/' } <--- same result when console.log shows 'y'
> console.log(x)
\/abc\/ <--- but here console.log displays x without the escape
> console.log(y.x)
\/abc\/ <--- similarly here for y.x
> let z = "\tHello"
> z
'\tHello' <--- when looking at z as an object we see "\t"
> console.log(z)
Hello <--- when looking at z as a string we see the tab expanded
>让x=“\\/abc\\/”
“\\/abc\\/”设y={x:x}
{x:'\\/abc\\/'}console.log(y)
{x:'\\/abc\\/'}console.log(x)
\/abc\/console.log(y.x)
\/abc\/let z=“\tHello”
>z
'\tHello'控制台.log(z)
您好,data
data=字符串我有data=“Hello/world//im/sky/”我的实际数据是从base64转换而来的字符串我已经更改了数据集您能检查一下它是否在您这边工作吗?我尝试这个是为了一个lamda aws函数是的,当然,让我检查一下。我不明白为什么我的代码不起作用。当我控制台记录结果时,我得到了双重转义。这真的对你有用吗,console.log(“结果2”:结果);结果之前的冒号?“:结果”。
> let x = "\\/abc\\/"
'\\/abc\\/' <--- first character is an escaped backslash "\\"
> let y = {x: x}
{ x: '\\/abc\\/' } <--- first character in y.x is still an escaped backslash
> console.log(y)
{ x: '\\/abc\\/' } <--- same result when console.log shows 'y'
> console.log(x)
\/abc\/ <--- but here console.log displays x without the escape
> console.log(y.x)
\/abc\/ <--- similarly here for y.x
> let z = "\tHello"
> z
'\tHello' <--- when looking at z as an object we see "\t"
> console.log(z)
Hello <--- when looking at z as a string we see the tab expanded