2011-07-24 6 views
96

Chcę zakodować obiekt JavaScript w łańcuchu JSON i mam znaczne trudności.Kodowanie obiektu JavaScript do łańcucha Json

Przedmiot wyglądać tak

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

chcę dostać to na ciąg JSON, aby umieścić go w ajax żądanie.

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

otrzymujesz zdjęcie. Bez względu na to, co robię, po prostu nie działa. Wszystkie kodery JSON takie jak json2 i takie produkują

[] 

Cóż, to mi nie pomoże. Zasadniczo chciałbym mieć coś podobnego do funkcji php encodejson.

+3

co ty rzeczywiście spróbować? proszę podać kod swoich prób ... –

Odpowiedz

152

Chyba że zmienna k jest zdefiniowana, to prawdopodobnie powoduje kłopoty. Coś jak to zrobi to, co chcesz:

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

Można również zrobić to wszystko naraz:

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

Jesteś geniuszem. Dziękuję Ci bardzo. K zostało zdefiniowane. Problem polegał na tym, że byłem głupi używając nowego Array() zamiast obiektu {}. –

+0

Działa idealnie ... Wykonuję test, a wyniki są niesamowite. Dzięki. 'console.info (json); console.log (new_tweets ["k"]); console.log (new_tweets ["k"] ["user_id"]); console.log (new_tweets ["k"] ["data"] ["text"]); ' – Equiman

+0

Po tym wszystkim czytając o zabezpieczeniach CORS i Chrome, jest to prosty i skuteczny sposób kodowania danych JSON. Zasłużony +1 – ashes999

13

Można użyć tej funkcji:

JSON.stringify(new_tweets);