Javascript 使用json.stringify将JS对象转换为json字符串

Javascript 使用json.stringify将JS对象转换为json字符串,javascript,Javascript,我有四个文本框,其中包含我通过在各种js对象上调用json.stringify创建的json字符串 eg. '["users.name","users.username"]' (This is the value of one textbox) 我想做的是从这四个json字符串中创建一个json字符串,并使用POST将它们发送到后端 所以我创建了一个对象,然后像这样添加它们 tmp = {} tmp["columns"] = $("#sc").val(); /*adding more data

我有四个文本框,其中包含我通过在各种js对象上调用json.stringify创建的json字符串

eg. '["users.name","users.username"]' (This is the value of one textbox)
我想做的是从这四个json字符串中创建一个json字符串,并使用POST将它们发送到后端

所以我创建了一个对象,然后像这样添加它们

tmp = {}
tmp["columns"] = $("#sc").val();
/*adding more data....*/

$.ajax("/api/backend", {
        data: JSON.stringify(tmp),
       /* more ajax code...*/
    });
发送的数据采用以下格式

{"columns":"[\"users.name\",\"users.username\"]"}
这不是一个字符串,而是一个json对象

现在,当我做以下事情时

tmp1=  JSON.stringify(tmp)
和使用后

$.ajax("/api/backend", {
data: JSON.stringify(tmp1),
/*more code below..*/
发送的数据采用以下格式,并且是字符串

"{\"columns\":\"[\\\"users.name\\\",\\\"users.username\\\"]\"}"
此字符串包含大量的“\”字符,需要在后端考虑这些字符

这是处理我问题的正确方法还是我做错了什么


谢谢

这取决于你想要达到的目标

如果要向服务器发送一个JSON,该JSON将输入中的所有JSON组合在一起,那么最好先解析输入中的JSON,然后再将其添加到
tmp
对象中。这样,您就得到了一个包含对象的对象,而不是一个包含JSON字符串的对象

从输入中检索JSON如下:

tmp["columns"] = JSON.parse($("#sc").val());
请注意,您正在
tmp
对象中存储对象,而不是JSON字符串。然后,您可以将该对象作为JSON发送到服务器

因此,您的服务器将收到以下信息:

"{\"columns\":\"[\"users.name\",\"users.username\"]\"}"

我相信这看起来好多了。我希望这会有所帮助。

我想主要的问题是,为什么文本框中有序列化数据?你实际上想发送什么?我按照你的建议进行了JSON.Parse,删除了tmp1=JSON.stringify(tmp),然后返回到数据:JSON.stringify(tmp),但它发送JSON obj而不是stringnow数据结构是{“columns”:“[“users.name”,”users.username“]”}我添加了tmp1=JSON.stringify(tmp)及其工作..tx