การเข้ารหัสวัตถุ Javascript เป็นสตริง Json


102

ฉันต้องการเข้ารหัสออบเจ็กต์ Javascript เป็นสตริง JSON และฉันประสบปัญหามาก

วัตถุมีลักษณะประมาณนี้

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

ฉันต้องการรับสิ่งนี้ลงในสตริง JSON เพื่อใส่ลงในคำขอ ajax

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

คุณจะได้รับภาพ ไม่ว่าฉันจะทำยังไงมันก็ไม่ได้ผล ตัวเข้ารหัส JSON ทั้งหมดเช่น json2 และผลงานดังกล่าว

[]

ดีที่ไม่ได้ช่วยฉัน โดยทั่วไปฉันต้องการบางอย่างเช่นencodejsonฟังก์ชัน php


3
คุณได้ลองทำอะไร? โปรดระบุรหัสการทดลองของคุณ ...
Andreas Niedermair

คำตอบ:


163

หากkไม่ได้กำหนดตัวแปรไว้นั่นอาจเป็นสาเหตุของปัญหาของคุณ สิ่งนี้จะทำสิ่งที่คุณต้องการ:

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

คุณสามารถทำได้ทั้งหมดในครั้งเดียว:

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

3
คุณคืออัจฉริยะ. ขอบคุณมาก. กำหนด k ปัญหาคือฉันโง่โดยใช้ Array ใหม่ () แทนวัตถุ {}
Lukas Oppermann

ทำงานได้อย่างสมบูรณ์แบบ ... ฉันทำแบบทดสอบและผลลัพธ์ที่ได้นั้นยอดเยี่ยมมาก ขอบคุณ. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman

หลังจากอ่านเกี่ยวกับ CORS และความปลอดภัยของ Chrome มานานแล้วนี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการเข้ารหัสข้อมูล JSON +1 ที่สมควรได้รับอย่างมาก
ashes999

1
@ TomášZato: ทำไมถึงเป็นเช่นนั้น? JSON.stringifyมาก่อนของ PHP json_encodeหากนั่นคือสิ่งที่คุณพูดถึง
Dave Ward

ใช่นั่นคือสิ่งที่ฉันคิด ฉันค้นพบJSONเมื่อเร็ว ๆ นี้ ที่ผ่านมาฉันเคยevalแยกวิเคราะห์การตอบสนอง JSON ฉันดีใจที่ eval จะหายไปจากรหัสของฉัน
Tomáš Zato - คืนสถานะ Monica

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.