Javascript Nesnesini Json dizesine kodlama


102

Bir Javascript nesnesini bir JSON dizesine kodlamak istiyorum ve önemli zorluklar yaşıyorum.

Nesne şuna benzer

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

Bunu bir ajax isteğine eklemek için bir JSON dizesine almak istiyorum.

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

resmi al. Ne yaparsam yapayım, işe yaramıyor. Json2 ve benzeri tüm JSON kodlayıcılar

[]

Bu bana yardımcı olmuyor. Temel olarak php encodejsonişlevi gibi bir şeye sahip olmak istiyorum .


3
aslında ne denedin? lütfen denemelerinizin kodunu sağlayın ...
Andreas Niedermair

Yanıtlar:


163

Değişken ktanımlanmadıkça, muhtemelen sorununuza neden olan budur. Bunun gibi bir şey istediğinizi yapacak:

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

Ayrıca hepsini bir kerede de yapabilirsiniz:

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

3
Sen bir dahisin. Çok teşekkür ederim. K tanımlandı. Sorun, {} nesnesi yerine new Array () kullanarak aptal olmamdı.
Lukas Oppermann

Mükemmel çalışıyor ... Bir test yapıyorum ve sonuç harika. Teşekkürler. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman

Bunca zaman CORS ve Chrome güvenliği hakkında bir şeyler okuduktan sonra, bu JSON verilerini kodlamanın basit ve etkili bir yoludur. Çok hak edilmiş +1
ashes999

1
@ TomášZato: Neden özellikle öyle olsun? Eğer JSON.stringifykastettiğiniz json_encodebuysa, PHP'lerden öncedir .
Dave Ward

Evet, düşündüğüm buydu. JSONÇok yakın zamanda öğrendim . Geçmişte evalJSON yanıtlarını ayrıştırırdım. Değerlendirmenin kodumdan çıkacağına sevindim.
Tomáš Zato -

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.