11
votes

JQuery: Convertissez la chaîne avec des valeurs séparées par des virgules sur un format JSON spécifique

J'ai perdu des heures sur quelque chose qui pourrait être trivial:

J'ai une liste d'adresses e-mail séparées par des virgules que je souhaite convertir en un format JSON spécifique, destiné à être utilisé avec l'API de Mandrill. ( https://mandrillapp.com/api/docs/messages.json.htmlLec a>)

ma chaîne: xxx

quoi (je pense), il doit être: xxx

J'ai un jsfiddle dans lequel je l'ai presque je pense: http://jsfiddle.net/5J8Z7/1/

i ' J'ai regardé dans plusieurs plug-ins jQuery, parmi lesquels: http://code.google.com/p / jquery-json Mais je continue à obtenir des erreurs de syntaxe.

Un autre post sur ce que vous avez suggéré de le faire à la main: JavaScript Associative Array à Json

Cela pourrait être une question triviale, mais la documentation de la codecadamy de l'API de Mandrill a été en panne depuis quelque temps et qu'il n'y a pas d'exemples décents disponibles.


1 commentaires

Vous pouvez simplement le scinder sur des virgules, mais si vous n'avez aucun contrôle sur les adresses électroniques qui ne sont pas sûrs à 100%, car une adresse électronique valide peut avoir une virgule.


4 Réponses :


20
votes
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]});
}

1 commentaires

Vous faites l'air si facile :-) J'accepterai votre réponse sous peu. Je dois attendre 10 minutes apparemment!



3
votes

Essayez de changer la boucle à ceci:

    var JSON = [];
    $(pieces).each(function(index) {
        JSON.push({'email': pieces[index]});   
    });


1 commentaires

Merci pour votre réponse! Je l'aurais accepté, mais @anton était d'abord ;-)



3
votes

Que diriez-vous: xxx

sortie: xxx

démo: http://jsfiddle.net/tymejv/ykpdc/1/


1 commentaires

Wow, quelle technique étrange. Je n'ai pas vu cela avant!



4
votes

Essayez cette version ES6 qui a de mieux effectuer le code de code.

p>

'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);


0 commentaires