Javascript JSON.stringify()与array.join(';,';)

Javascript JSON.stringify()与array.join(';,';),javascript,json,string,asp.net-web-api,serialization,Javascript,Json,String,Asp.net Web Api,Serialization,在Angular 6中,我使用myString.join(',')将一个ID数组连接到一个逗号分隔的长字符串中 当我将其发送到.netwebapi时,我注意到只发送了一个值,即第一个ID。然后,我在前端将myString.join(',')更改为JSON.stringify(myString.join(',')),从而解决了这个问题。现在,在API上,所有ID都已成功发送 我想知道为什么会这样。我知道数据需要通过JSON发送,但是JSON字符串和.join(',')构建的前端Typescript

Angular 6
中,我使用
myString.join(',')
将一个ID数组连接到一个逗号分隔的长字符串中

当我将其发送到
.netwebapi
时,我注意到只发送了一个值,即第一个ID。然后,我在前端将
myString.join(',')
更改为
JSON.stringify(myString.join(','))
,从而解决了这个问题。现在,在API上,所有ID都已成功发送


我想知道为什么会这样。我知道数据需要通过
JSON
发送,但是
JSON
字符串和
.join(',')
构建的前端Typescript字符串之间有什么区别?我有点希望只有一个常规的
.join()
可以工作,因为它是一个字符串。

两个
array.prototype.join
JSON.stringify
都返回简单的字符串。因此,您应该能够通过控制台记录这两者,并找到输入的区别

很可能是它的引号
JSON.stringify(string)
string
包装在引号
中并转义现有引号

let s='“哟,我已经有很多引号了””;
设j=JSON.stringify;
控制台日志;

控制台日志(j)
array.prototype.join
JSON.stringify
返回简单字符串。因此,您应该能够通过控制台记录这两者,并找到输入的区别

很可能是它的引号
JSON.stringify(string)
string
包装在引号
中并转义现有引号

let s='“哟,我已经有很多引号了””;
设j=JSON.stringify;
控制台日志;

控制台日志(j)啊,你说得对。我的ID日志数组为
[ID1,ID2]
,myString.join(',')日志为
ID1,ID2
,json.stringify(myString.join(','))日志为
'ID1,ID2'
。所以我想我两者都需要。谢谢@JunvarI我很惊讶myString.join(',')没有用引号括起来,因为它应该是一个字符串,对吗?这是为什么?
[a',b',10,true]。join(',)
返回字符串
“a,b,10,true”
。它既不添加空格,也不将字符串括在引号中,因为这不是它的用途。我认为您混淆了返回带引号的字符串,这是两个不同的操作。字符串可以在不使用引号的情况下存在,例如
'hello'
v
'hello'
。是的,在这种情况下,它们会产生类似的结果,但如果不在概念上将它们分开,很容易混淆,正如这个问题所示。序列化不应用于连接,反之亦然。相反,根据你想要实现的目标选择正确的工具。哈,你是正确的。我的ID日志数组为
[ID1,ID2]
,myString.join(',')日志为
ID1,ID2
,json.stringify(myString.join(','))日志为
'ID1,ID2'
。所以我想我两者都需要。谢谢@JunvarI我很惊讶myString.join(',')没有用引号括起来,因为它应该是一个字符串,对吗?这是为什么?
[a',b',10,true]。join(',)
返回字符串
“a,b,10,true”
。它既不添加空格,也不将字符串括在引号中,因为这不是它的用途。我认为您混淆了返回带引号的字符串,这是两个不同的操作。字符串可以在不使用引号的情况下存在,例如
'hello'
v
'hello'
。是的,在这种情况下,它们会产生类似的结果,但如果不在概念上将它们分开,很容易混淆,正如这个问题所示。序列化不应用于连接,反之亦然。相反,根据你想要完成的事情选择正确的工具