Javascript-Objekt in Json-Zeichenfolge codieren

102

Ich möchte ein Javascript-Objekt in eine JSON-Zeichenfolge codieren und habe erhebliche Schwierigkeiten.

Das Objekt sieht ungefähr so ​​aus

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

Ich möchte dies in eine JSON-Zeichenfolge umwandeln, um es in eine Ajax-Anforderung einzufügen.

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

du bekommst das Bild. Egal was ich mache, es funktioniert einfach nicht. Alle JSON-Encoder wie json2 und solche produzieren

[]

Nun, das hilft mir nicht. Grundsätzlich hätte ich gerne so etwas wie die PHP- encodejsonFunktion.

Lukas Oppermann
quelle
3
Was hast du eigentlich versucht? Bitte geben Sie einen Code für Ihre Versuche an ...
Andreas Niedermair

Antworten:

163

Wenn die Variable nicht kdefiniert ist, ist dies wahrscheinlich der Grund für Ihre Probleme. So etwas macht, was Sie wollen:

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

Sie können auch alles auf einmal tun:

var new_tweets = {
  k: {
    tweet_id: 98745521,
    user_id: 54875,
    data: {
      in_reply_to_screen_name: 'other_user',
      text: 'tweet_text'
    }
  }
}
Dave Ward
quelle
3
Du bist ein Genie. Vielen Dank. Das k wurde definiert. Das Problem war, dass ich dumm war, neues Array () anstelle eines Objekts {} zu verwenden.
Lukas Oppermann
Funktioniert perfekt ... Ich mache einen Test und das Ergebnis ist fantastisch. Vielen Dank. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
Equiman
Nach all dem Lesen der CORS- und Chrome-Sicherheit ist dies eine einfache und effektive Methode zum Codieren von JSON-Daten. Eine sehr wohlverdiente +1
Asche999
1
@ TomášZato: Warum genau? JSON.stringifyälter als PHPs json_encode, wenn Sie darauf anspielen.
Dave Ward
Ja, das habe ich mir gedacht. Ich habe vor JSONkurzem davon erfahren. In der Vergangenheit habe ich evalJSON-Antworten analysiert. Ich war froh, dass die Bewertung von meinem Code gestrichen wird.
Tomáš Zato - Wiedereinsetzung Monica
14

Sie können JSON.stringifywie folgt verwenden :

JSON.stringify(new_tweets);
Luca C.
quelle