Codifica di un oggetto Javascript in una stringa Json


102

Voglio codificare un oggetto Javascript in una stringa JSON e sto avendo notevoli difficoltà.

L'oggetto ha un aspetto simile a questo

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

Voglio inserirlo in una stringa JSON per inserirlo in una richiesta ajax.

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

ottieni l'immagine. Non importa quello che faccio, semplicemente non funziona. Tutti i codificatori JSON come json2 e simili producono

[]

Beh, questo non mi aiuta. Fondamentalmente vorrei avere qualcosa come la encodejsonfunzione php .


3
cosa hai effettivamente provato? per favore fornisci un codice delle tue prove ...
Andreas Niedermair

Risposte:


163

A meno che la variabile non ksia definita, questo è probabilmente ciò che sta causando i tuoi problemi. Qualcosa di simile farà quello che vuoi:

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

Puoi anche farlo tutto in una volta:

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

3
Sei un genio. Grazie mille. La k è stata definita. Il problema era che ero stupido usando new Array () invece di un oggetto {}.
Lukas Oppermann

Funziona perfettamente ... Faccio un test e il risultato è fantastico. Grazie. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman

Dopo tutto questo tempo a leggere su CORS e sulla sicurezza di Chrome, questo è un modo semplice ed efficace per codificare i dati JSON. Un meritato +1
ceneri999

1
@ TomášZato: Perché nello specifico dovrebbe essere? JSON.stringifyè precedente a PHP json_encode, se è quello a cui alludi.
Dave Ward

Sì, era quello che stavo pensando. L'ho scoperto di JSONrecente. In passato, evalanalizzavo le risposte JSON. Ero felice che la valutazione sarebbe stata cancellata dal mio codice.
Tomáš Zato - Ripristina Monica il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.