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

时间:2014-10-07 10:10:44

标签: javascript

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

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\\\"]\"}"

这个字符串有很多' \'需要在后端考虑的字符。

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

如果要向服务器发送一个结合了输入中所有JSON的JSON,在将它们添加到tmp对象之前,最好先解析输入中的JSON。这样,您将获得包含对象的对象,而不是包含JSON字符串的对象。

从输入中检索JSON将是这样的:

tmp["columns"] = JSON.parse($("#sc").val());

看到您在tmp对象中存储对象,而不是JSON字符串。然后,您可以将该对象作为JSON发送到您的服务器。

因此,您的服务器会收到:

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

我认为,这看起来好多了。我希望有所帮助。