jQuery:将逗号分隔的字符串转换为特定的JSON格式

11

我花了很多时间在一件可能微不足道的事情上:

我有一个逗号分隔的电子邮件地址列表,我想将其转换为特定的JSON格式,以便与Mandrill API(https://mandrillapp.com/api/docs/messages.JSON.html)一起使用。

我的字符串:

var to = 'bigbadwolf@grannysplace.com,hungry@hippos.com,youtalkin@to.me';

我认为需要的是什么:

[
    {"email": "bigbadwolf@grannysplace.com"},
    {"email": "hungry@hippos.com"},
    {"email": "youtalkin@to.me"}
]

我在JSFiddle中已经接近解决,至少我认为是这样的: http://jsfiddle.net/5j8Z7/1/

我研究了几个jQuery插件,其中包括:http://code.google.com/p/jquery-json 但我总是得到语法错误。

另一篇SO的帖子建议手动处理:JavaScript associative array to JSON

这可能是一个琐碎的问题,但Mandrill API的Codecadamy文档已经挂了一段时间,没有合适的例子可用。


你可以直接按逗号分割,但如果你无法控制电子邮件地址,那不是100%安全的,因为有效的电子邮件地址可能包含逗号。 - Pointy
4个回答

20
var json = [];
var to = 'bigbadwolf@grannysplace.com,hungry@hippos.com,youtalkin@to.me';
var toSplit = to.split(",");
for (var i = 0; i < toSplit.length; i++) {
    json.push({"email":toSplit[i]});
}

你让它看起来如此轻松 :-) 我很快就会接受你的答案。显然我必须等待10分钟! - chocolata

5

尝试这个ES6版本,它具有更好的性能代码片段。

'use strict';

let to = 'bigbadwolf@grannysplace.com,hungry@hippos.com,youtalkin@to.me';

let emailList = to.split(',').map(values => {
    return {
        email: values.trim(),
    }
});

console.log(emailList);


4
如何:
var to = 'bigbadwolf@grannysplace.com,hungry@hippos.com,youtalkin@to.me',
    obj = [],
    parts = to.split(",");

for (var i = 0; i < parts.length; i++) {
    obj.push({email:parts[i]});
}

//Logging
for (var i = 0; i < obj.length; i++) {
    console.log(obj[i]);
}

输出:

Object {email: "bigbadwolf@grannysplace.com"}
Object {email: "hungry@hippos.com"}
Object {email: "youtalkin@to.me"}

Demo: http://jsfiddle.net/tymeJV/yKPDc/1/


哇,这是一种奇怪的技巧。以前从未见过! - chocolata

3
尝试将循环更改为以下内容:
    var JSON = [];
    $(pieces).each(function(index) {
        JSON.push({'email': pieces[index]});   
    });

谢谢你的回答!我本来会接受它的,但是@Anton先回答了;-) - chocolata

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