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.