Кодування об'єкта 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 і подібні

[]

Ну, це мені не допомагає. В основному я хотів би мати щось на зразок функції php encodejson.


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 () замість об'єкта {}.
Лукас Опперман

Працює ідеально ... Я роблю тест і результат є приголомшливим. Дякую. console.info(json); console.log(new_tweets["k"]); console.log(new_tweets["k"]["user_id"]); console.log(new_tweets["k"]["data"]["text"]);
еквіман

Після закінчення цього часу, читаючи про безпеку CORS та Chrome, це простий та ефективний спосіб кодування даних JSON. Дуже заслужений +1
ashes999

1
@ TomášZato: Чому саме це було б? JSON.stringifyпередує PHP json_encode, якщо саме на це ви нагадаєте.
Дейв Ворд

Так, саме так я і думав. Про це я дізнався JSONзовсім недавно. Раніше я evalаналізував відповіді JSON. Я був радий, що з мого коду буде eval.
Томаш Зато - Відновити Моніку

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.