Encodage d'un objet Javascript en chaîne Json

102

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

L'objet ressemble à quelque chose comme ça

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 dans une chaîne JSON pour le mettre dans une requête ajax.

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

vous voyez l'image. Peu importe ce que je fais, ça ne marche tout simplement pas. Tous les encodeurs JSON comme json2 et autres produisent

[]

Eh bien, cela ne m'aide pas. En gros, j'aimerais avoir quelque chose comme la encodejsonfonction php .

Lukas Oppermann
la source
3
qu'avez-vous réellement essayé? veuillez fournir un code de vos essais ...
Andreas Niedermair

Réponses:

163

À moins que la variable ne ksoit définie, c'est probablement ce qui cause votre problème. Quelque chose comme ça 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 tout faire en même temps:

var new_tweets = {
  k: {
    tweet_id: 98745521,
    user_id: 54875,
    data: {
      in_reply_to_screen_name: 'other_user',
      text: 'tweet_text'
    }
  }
}
Dave Ward
la source
3
Tu es 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 {}.
Lukas Oppermann
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
Après tout ce temps à lire sur CORS et la sécurité Chrome, il s'agit d'un moyen simple et efficace d'encoder des données JSON. Un +1 très bien mérité
cendres999
1
@ TomášZato: Pourquoi en serait-il précisément? JSON.stringifyest antérieur à PHP json_encode, si c'est ce à quoi vous faites allusion.
Dave Ward
Oui, c'est ce que je pensais. J'ai découvert JSONtrès récemment. Dans le passé, evalj'analysais les réponses JSON. J'étais heureux que l'évaluation soit faite à partir de mon code.
Tomáš Zato - Réintégrer Monica
14

Vous pouvez utiliser JSON.stringify comme:

JSON.stringify(new_tweets);
Luca C.
la source