2011-07-24 3 views
96

Je veux encoder un objet Javascript dans une chaîne JSON et j'ai des difficultés considérables.Encodage d'un objet Javascript dans une chaîne JSON

L'objet ressemble à ceci

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"; 

Je veux obtenir cela en une chaîne JSON pour le mettre dans une demande ajax.

{'k':{'tweet_id':98745521,'user_id':54875, 'data':{...}}} 

vous voyez la photo. Peu importe ce que je fais, ça ne marche pas. Tous les codeurs JSON comme json2 et les produits tels

[] 

Eh bien, cela ne me permet pas. Fondamentalement, je voudrais avoir quelque chose comme la fonction php encodejson.

+3

qu'est-ce que vous essayez réellement? s'il vous plaît fournir un peu de code de vos essais ... –

Répondre

152

À moins que la variable k soit définie, c'est probablement ce qui cause votre problème. Quelque chose comme cela va faire ce que vous voulez:

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

Vous pouvez aussi le faire à la fois:

var new_tweets = { 
    k: { 
    tweet_id: 98745521, 
    user_id: 54875, 
    data: { 
     in_reply_to_screen_name: 'other_user', 
     text: 'tweet_text' 
    } 
    } 
} 
+2

Vous êtes un génie. Merci beaucoup. Le k a été défini. Le problème était que j'étais stupide en utilisant new Array() au lieu d'un objet {}. –

+0

Fonctionne parfaitement ... Je fais un test et le résultat est génial. Merci. 'console.info (json); console.log (new_tweets ["k"]); console.log (new_tweets ["k"] ["user_id"]); console.log (new_tweets ["k"] ["data"] ["text"]); ' – Equiman

+0

Après tout ce temps à lire sur la sécurité CORS et Chrome, c'est un moyen simple et efficace d'encoder des données JSON. Un très bien mérité +1 – ashes999

13

Vous pouvez utiliser cette fonction:

JSON.stringify(new_tweets); 
Questions connexes