2017-10-13 2 views
0

J'ai un tableau d'objets, comme ceci:Javascript convertir propriété d'objet à chaîne à l'aide JSON.stringify() objet retour

var arr = [{request: {funding : 123, id: 123abc, membership: true}, 
response: {funding : 285, success: true }}, 
{request: {funding : 123, id: 123def, membership: true}, 
response: {funding : 167, success: true }}, 
{request: {funding : 123, id: 123def, membership: true}, 
response: {funding : 234, success: true }}] 

Je tente de convertir les objets imbriqués en chaînes pour un programme d'analyse syntaxique CSV cependant lorsque vous utilisez le code suivant:

for (var item in arr) 
    { item.response = JSON.stringify(item.response); 
     item.request = JSON.stringify(item.request); 
} 

après vérification typeof(item.response) pour un élément dans mon tableau, je reçois toujours retourné object. Cependant, si je règle manuellement la propriété de l'élément individuel, en dehors d'une boucle for, il semble fonctionner comme prévu.

par exemple.

arr[0].response = JSON.stringify(arr[0].response) 
typeof(arr[0].response) // string 

Répondre

2

Lorsque vous utilisez l'for...initem est l'indice, et non l'objet lui-même. Utilisez plutôt for...of, qui attribuera la valeur à item:

var arr = [{"request":{"funding":123,"id":"123abc","membership":true},"response":{"funding":285,"success":true}},{"request":{"funding":123,"id":"123def","membership":true},"response":{"funding":167,"success":true}},{"request":{"funding":123,"id":"123def","membership":true},"response":{"funding":234,"success":true}}]; 
 

 
for (var item of arr) { 
 
    item.response = JSON.stringify(item.response); 
 
    item.request = JSON.stringify(item.request); 
 
} 
 

 
console.log(arr);

Si vous ne voulez pas muter vos données, Array#map créerait un nouveau tableau, avec de nouveaux objets, au lieu de changer les originaux:

var arr = [{"request":{"funding":123,"id":"123abc","membership":true},"response":{"funding":285,"success":true}},{"request":{"funding":123,"id":"123def","membership":true},"response":{"funding":167,"success":true}},{"request":{"funding":123,"id":"123def","membership":true},"response":{"funding":234,"success":true}}]; 
 

 
var result = arr.map(function(item) { 
 
    return { 
 
    response: JSON.stringify(item.response), 
 
    request: JSON.stringify(item.request) 
 
    }; 
 
}); 
 

 
console.log(result);

+0

Parfait, merci! – mburke05

+0

Bienvenue. Voir l'autre option que j'ai ajoutée, et n'oubliez pas d'accepter la réponse :) –