2011-07-24 23 views
96

Quiero codificar un objeto Javascript en una cadena JSON y estoy teniendo considerables dificultades.Codificación de objeto JavaScript a cadena Json

El objeto se ve algo como 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 conseguir esto en una cadena JSON para ponerlo en una petición AJAX.

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

se obtiene la imagen. No importa lo que haga, simplemente no funciona. Todos los codificadores JSON como json2 y tales producen

[] 

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

+3

¿qué realidad se intenta? por favor proporcione un código de sus ensayos ... –

Respuesta

152

A menos que se defina la variable k, eso es probablemente lo que está causando el problema. Algo como esto va a hacer lo que quiere:

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 puede 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' 
    } 
    } 
} 
+2

Usted es un genio. Muchas gracias. La k fue definida. El problema era que yo era estúpido al usar Array() nuevo en lugar de un objeto {}. –

+0

Funciona perfecto ... Realizo una prueba y el resultado es increíble. Gracias. 'console.info (json); console.log (new_tweets ["k"]); console.log (new_tweets ["k"] ["user_id"]); console.log (new_tweets ["k"] ["data"] ["text"]); ' – Equiman

+0

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

13

Se puede utilizar esta función:

JSON.stringify(new_tweets);