Codificación de un objeto Javascript en una cadena Json


102

Quiero codificar un objeto Javascript en una cadena JSON y tengo considerables dificultades.

El objeto se parece a esto

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

Quiero poner esto en una cadena JSON para ponerlo en una solicitud ajax.

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

te dan la imagen. No importa lo que haga, simplemente no funciona. Todos los codificadores JSON como json2 y similares producen

[]

Bueno, eso no me ayuda. Básicamente, me gustaría tener algo como la encodejsonfunción php .


3
¿Qué probaste realmente? proporcione algún código de sus pruebas ...
Andreas Niedermair

Respuestas:


163

A menos que la variable kesté definida, eso es probablemente lo que está causando su problema. Algo como esto hará lo que quieras:

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

También puedes hacerlo todo a la vez:

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

3
Eres un genio. Muchas gracias. Se definió la k. El problema era que yo era estúpido usando new Array () en lugar de un objeto {}.
Lukas Oppermann

Funciona perfecto ... hago una prueba y el resultado es impresionante. Gracias. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
Equiman

Después de todo este tiempo leyendo sobre CORS y la seguridad de Chrome, esta es una forma simple y efectiva de codificar datos JSON. Un +1 muy merecido
cenizas999

1
@ TomášZato: ¿Por qué lo sería específicamente? JSON.stringifyes anterior a PHP json_encode, si eso es a lo que te refieres.
Dave Ward

Sí, eso era lo que estaba pensando. Me enteré JSONmuy recientemente. En el pasado, solía evalanalizar las respuestas JSON. Me alegré de que la evaluación desaparezca de mi código.
Tomáš Zato - Reincorpora a Monica

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.