103 votes

Encodage d'un objet Javascript en chaîne Json

Je souhaite encoder un objet Javascript dans une chaîne JSON et j'éprouve de grandes difficultés.

L'objet ressemble à quelque chose comme 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 transformer cette information en une chaîne JSON pour la placer dans une requête ajax.

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

vous voyez le tableau. Peu importe ce que je fais, ça ne marche pas. Tous les encodeurs JSON comme json2 et autres produisent

[]

Eh bien, cela ne m'aide pas. En gros, je voudrais avoir quelque chose comme le php encodejson fonction.

5 votes

Qu'avez-vous réellement essayé ? veuillez fournir quelques codes de vos essais...

163voto

Dave Ward Points 36006

Sauf si la variable k est définie, c'est probablement ce qui cause votre problème. Quelque chose comme ceci fera 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 également le faire en une seule fois :

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

3 votes

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

0 votes

Fonctionne parfaitement... J'ai fait un test et les résultats sont géniaux. Merci. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);

0 votes

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

16voto

Luke Points 82

Vous pouvez utiliser JSON.stringify comme :

JSON.stringify(new_tweets);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X