将Javascript对象编码为Json字符串


102

我想将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函数的功能。


3
您实际尝试了什么?请提供一些试验代码...
Andreas Niedermair

Answers:


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。问题是我愚蠢地使用new Array()而不是对象{}。
卢卡斯·欧珀曼

完美的作品...我进行了测试,结果很棒。谢谢。 console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman 2013年

在阅读了所有有关CORS和Chrome安全性的内容之后,这是一种编码JSON数据的简单有效的方法。非常当之无愧的+1
ashes999

1
@TomášZato:为什么会这样呢?如果您要暗示的话,它JSON.stringify早于PHP的json_encode
戴夫·沃德

是的,这就是我的想法。我JSON是最近才发现的。过去,我曾经eval解析JSON响应。我很高兴评估我的代码会成功。
托马什Zato -恢复莫妮卡

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.