【发布时间】:2021-02-18 21:41:38
【问题描述】:
我正在使用 React Native 开发一个应用程序,该应用程序与物联网芯片(内存非常少)进行通信,因为所有逻辑都必须在客户端开发。
该芯片的一个规格是所有字符“,”必须用一个颤音斜线进行转义。
例如:
发件人:
{ value: 'foo,bar' }
收件人:
{ value: 'foo\,bar' }
我正在使用 axios 发送此信息:
import axios from 'axios';
const body = { value: 'foo,bar' };
const parsedBody = { value: body.value.replace(/,/g, '\\,') } // { value: 'foo\,bar' }
axios({
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json; charset=utf-8',
},
url: 'https://example.com',
data: body,
}).then(response => {
console.log('message sent!');
});
问题在于,另一方面,服务器正在接收带有额外颤音斜线的主体(作为对象)
例如:
{ value: 'foo\\,bar' }
我不确定 axios 是否正在修改信息。但我只需要用一个颤音斜线接收它(我无法在服务器端解析它)
【问题讨论】:
-
很可能是您误解了结果,而您用来检查该值的函数是添加转义字符作为表示字符串的一种方式。我们需要查看服务器端代码来判断。
-
在前端:body.value.split(',').join('\,') 将其转换为相应的格式并查看结果。这里先根据','将字符串转换为数组,然后再使用'\,'将数组转换为字符串
-
@Quentin 这是我想到的第一件事。但是我创建了一个测试服务器来查看结果,当我检查字符串长度时响应有一个额外的字符
-
@RohitDalal 我用这种方法得到了同样的结果
标签: javascript node.js react-native axios escaping