2015-11-20 5 views
0

J'ai les données JSON suivantes:Convertir chaîne csv en JSON variable tableau

[ 
    { 
     "Title": "PAGE A", 
     "Users": "USRA" 
    }, 
    { 
     "Title": "PAGE B", 
     "Users": "USRA,USRB" 
    } 
] 

Quelle serait la meilleure façon de convertir les champs avec « » pour les tableaux? et obtenir l'aide de javascript:

[ 
    { 
     "Title": "PAGE A", 
     "Users": "USRA" 
    }, 
    { 
     "Title": "PAGE B", 
     "Users": ["USRA","USRB"] 
    } 
] 
+0

Jetez un oeil [ici] (http://stackoverflow.com/questions/20881213/converting-json-object-into- javascript-array) – AndreaM16

+1

Vous devez faire en sorte que les premiers utilisateurs soient '" Utilisateurs ": [" USRA "]'. –

+0

Pourquoi diable voudriez-vous un type de données incohérent? Faites-les tous les tableaux, peu importe s'ils ont seulement 1 élément ou pas – musefan

Répondre

0

quelque chose comme ça

var input = [ 
 
     { 
 
      "Title": "PAGE A", 
 
      "Users": "USRA" 
 
     }, 
 
     { 
 
      "Title": "PAGE B", 
 
      "Users": "USRA,USRB" 
 
     } 
 
    ]; 
 

 
var output = []; 
 

 
output = input.map(function(d){ 
 
     for (key in d){ 
 
     if (d[key].indexOf(',') !== -1){ 
 
      d[key] = d[key].split(','); 
 
      } 
 
     } 
 
    return d; 
 

 
}); 
 

 
$('#result').html(JSON.stringify(output));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="result"></div>

+0

Merci c'est une bonne réponse car il teste le problème "aaa, bbb" csv pour toutes les clés. –

+0

bienvenue, heureux si cela a fonctionné .. :) –

2

Vous pouvez faire:

data = [ 
    { 
     "Title": "PAGE A", 
     "Users": "USRA" 
    }, 
    { 
     "Title": "PAGE B", 
     "Users": "USRA,USRB" 
    } 
] 

data.forEach(function(item) { 
    // the if clause keeps the single user outside of an array 
    if (item.Users && item.Users.indexOf(',') >= 0) { 
     item.Users = item.Users.split(','); 
    } 
}) 

Si vous souhaitez conserver un type de données cohérentes (rendre la propriété Users toujours un Array):

data.forEach(function(item) { 
    item.Users = item.Users ? item.Users.split(',') : []; 
}) 
1

Un simple pour chaque avec un split est tout ce dont vous avez besoin

var data = [ 
    { 
     "Title": "PAGE A", 
     "Users": "USRA" 
    }, 
    { 
     "Title": "PAGE B", 
     "Users": "USRA,USRB" 
    } 
]; 

data.forEach(function (obj) { 
    obj.Users = obj.Users.split(","); 
}); 

Maintenant si vous ne voulez vraiment pas que celui-ci soit un tableau, alors vous devez ajouter un if.

data.forEach(function (obj) { 
    var parts = obj.Users.split(","); 
    if(parts.length>1) { 
     obj.Users = parts; 
    } 
});