将Javascript对象编码为Json字符串

103
我想将一个Javascript对象编码为JSON字符串,但我遇到了相当大的困难。
该对象看起来像这样。
new_tweets[k]['tweet_id'] = 98745521;
new_tweets[k]['user_id'] = 54875;       
new_tweets[k]['data']['in_reply_to_screen_name'] = "other_user";
new_tweets[k]['data']['text'] = "tweet text";
我想将这个转换成一个JSON字符串,以便将其放入ajax请求中。
{'k':{'tweet_id':98745521,'user_id':54875, 'data':{...}}}

你已经了解情况了。无论我做什么,它都不起作用。所有的JSON编码器,如json2等,都会产生

[]

那个回答对我没什么帮助。我需要的是类似于 PHP 的 encodejson 函数的东西。


5
你实际尝试了什么?请提供你的一些代码试验结果... - user57508
2个回答

163

除非变量k已被定义,否则可能会导致问题。像这样做可以实现你想要的效果:

var new_tweets = { };

new_tweets.k = { };

new_tweets.k.tweet_id = 98745521;
new_tweets.k.user_id = 54875;

new_tweets.k.data = { };

new_tweets.k.data.in_reply_to_screen_name = 'other_user';
new_tweets.k.data.text = 'tweet text';

// Will create the JSON string you're looking for.
var json = JSON.stringify(new_tweets);

你也可以一次性完成所有操作:

var new_tweets = {
  k: {
    tweet_id: 98745521,
    user_id: 54875,
    data: {
      in_reply_to_screen_name: 'other_user',
      text: 'tweet_text'
    }
  }
}

3
你是一个天才。非常感谢你。变量“k”已经定义好了。问题出在我使用了新的Array()而不是对象{},这是我太蠢了。 - Lukas Oppermann
非常完美...我进行了测试,结果很棒。谢谢。console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]); - equiman
在阅读了关于CORS和Chrome安全性的所有内容之后,这是一种简单而有效的编码JSON数据的方法。非常值得赞赏的+1。 - ashes999
1
@TomášZato:为什么会这样?如果你在暗示PHP的json_encode,那么JSON.stringify比它更早就存在了。 - Dave Ward
是的,那正是我所想的。最近我才了解到 JSON。在过去,我使用 eval 解析 JSON 响应。我很高兴 eval 将从我的代码中消失。 - Tomáš Zato

16

你可以像这样使用JSON.stringify

JSON.stringify(new_tweets);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接