Кодирование объекта 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
что ты на самом деле пробовал? пожалуйста, предоставьте код ваших испытаний ...
Андреас Нидермайр

Ответы:


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 был определен. Проблема заключалась в том, что я был глуп, используя new Array () вместо объекта {}.
Лукас Опперманн

Отлично работает ... Провожу тест, результат потрясающий. Спасибо. 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, если вы об этом имеете в виду.
Дэйв Уорд

Да, я так думал. Я узнал об этом JSONсовсем недавно. Раньше я evalанализировал ответы JSON. Я был рад, что eval будет удален из моего кода.
Томаш Зато - Восстановите Монику

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.