Codificando objeto Javascript para string Json

102

Quero codificar um objeto Javascript em uma string JSON e estou tendo dificuldades consideráveis.

O objeto se parece com isso

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

Eu quero colocar isso em uma string JSON para colocá-lo em uma solicitação ajax.

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

você começa a foto. Não importa o que eu faça, simplesmente não funciona. Todos os codificadores JSON como json2 e outros produzem

[]

Bem, isso não me ajuda. Basicamente, gostaria de ter algo como a encodejsonfunção php .

Lukas Oppermann
fonte
3
o que você realmente tentou? forneça algum código de seus testes ...
Andreas Niedermair

Respostas:

163

A menos que a variável kseja definida, provavelmente é isso que está causando o problema. Algo assim fará o que você quiser:

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

Você também pode fazer tudo de uma vez:

var new_tweets = {
  k: {
    tweet_id: 98745521,
    user_id: 54875,
    data: {
      in_reply_to_screen_name: 'other_user',
      text: 'tweet_text'
    }
  }
}
Dave Ward
fonte
3
Você é um gênio. Muito obrigado. O k foi definido. O problema era eu ser estúpido ao usar new Array () em vez de um objeto {}.
Lukas Oppermann
Funciona perfeito ... Eu faço um teste e o resultado é incrível. Obrigado. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman
Depois de todo esse tempo lendo sobre CORS e segurança do Chrome, esta é uma maneira simples e eficaz de codificar dados JSON. Um muito merecido +1
cinzas999
1
@ TomášZato: Por que especificamente seria? JSON.stringifyé anterior ao do PHP json_encode, se é a isso que você está se referindo.
Dave Ward
Sim, era isso que eu estava pensando. Eu descobri JSONmuito recentemente. No passado, costumava evalanalisar as respostas JSON. Fiquei feliz que a avaliação acabará no meu código.
Tomáš Zato - Reintegrar Monica em
14

Você pode usar JSON.stringifycomo:

JSON.stringify(new_tweets);
Luca C.
fonte