Mã hóa đối tượng Javascript thành chuỗi Json


102

Tôi muốn mã hóa một đối tượng Javascript thành một chuỗi JSON và tôi đang gặp khó khăn đáng kể.

Đối tượng trông giống như thế này

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

Tôi muốn đưa điều này vào một chuỗi JSON để đưa nó vào một yêu cầu ajax.

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

Bạn nhận được hình ảnh. Không có vấn đề gì tôi làm, nó chỉ là không hiệu quả. Tất cả các bộ mã hóa JSON như json2 và các sản phẩm tương tự

[]

Chà, điều đó không giúp được gì cho tôi. Về cơ bản, tôi muốn có một cái gì đó giống như encodejsonhàm php .


3
bạn đã thực sự thử những gì? vui lòng cung cấp một số mã của các thử nghiệm của bạn ...
Andreas Niedermair

Câu trả lời:


163

Trừ khi biến kđược xác định, đó có thể là nguyên nhân gây ra rắc rối cho bạn. Một cái gì đó như thế này sẽ làm những gì bạn muốn:

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

Bạn cũng có thể làm tất cả cùng một lúc:

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

3
Bạn là một thiên tài. Cảm ơn rât nhiều. K đã được xác định. Vấn đề là tôi đã ngu ngốc khi sử dụng Array () mới thay vì một đối tượng {}.
Lukas Oppermann,

Hoạt động hoàn hảo ... Tôi thực hiện một bài kiểm tra và kết quả thật tuyệt vời. Cảm ơn. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
equiman

Sau tất cả thời gian đọc về CORS và bảo mật Chrome, đây là cách đơn giản và hiệu quả để mã hóa dữ liệu JSON. +1 rất xứng đáng
ashes999

1
@ TomášZato: Tại sao lại là nó? JSON.stringifycó trước PHP json_encode, nếu đó là những gì bạn đang ám chỉ.
Dave Ward

Vâng, đó là những gì tôi đã nghĩ. Tôi đã tìm hiểu về JSONrất gần đây. Trước đây, tôi đã từng evalphân tích cú pháp các câu trả lời JSON. Tôi rất vui vì đánh giá sẽ là gon từ mã của tôi.
Tomáš Zato - Khôi phục Monica

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.