Нужна помощь в создании строки JSON в JavaScript - PullRequest
0 голосов
/ 07 декабря 2010

Я не могу создать строку Json в следующем формате, пожалуйста, помогите. Где пара ключ-значение может быть числом:

"tag_container": { "tag1": "Tag1", "tag2": "Tag2", ..... }   
var uploaded = new Uploaded();
var str = "*#Hello* i *#am*  writing a regexp *#h*";
var re = hash_parser(str);  
uploaded.tag_list = new Array;
uploaded.tag_list.tag = new Array;

for(var i = 0; i < re.length; i++)
{
    uploaded.tag_list[i] = new Object;
    uploaded.tag_list[i].**tag** = re[i];
}

вышеуказанный код дает в следующем формате:

"tag_list":[{"**tag**":"*#Hello*"},{"**tag**":"*#am*"},{"**tag**":"*#h*"}]

Ответы [ 4 ]

3 голосов
/ 07 декабря 2010

I думаю возможно, вы путаете JSON с синтаксисом литералов объектов.

Вместо:

"tag_container": { "tag1": "Tag1", "tag2": "Tag2", ..... }   

вы должны просто использовать обычный синтаксис JS:

var tag_container = { "tag1": "Tag1", "tag2": "Tag2", ..... }

... но по твоему посту это очень сложно отличить. Если вы знаете кого-нибудь, кто может помочь вам с вашим английским, это действительно может помочь мне (и другим) лучше понять этот вопрос.

0 голосов
/ 07 декабря 2010

Спасибо всем за ответы и руководство. Моя проблема решена другим способом. Я отправляю строку json в кросс-домен

string = "hi  @group1 @group2  *user1 *user2 #fs #ffsd #fsdf";

и сгенерированная строка json

{"raw_msg":"hi @group1 @group2 *user1 *user2 #fs #ffsd #fsdf","msg_type":"group","top_msg_id":0,"file_container":{"file1":{"id":"","file_name":"","uri":""},"file2":{"id":"","file_name":"","uri":""}},***"tag_list":["fs","ffsd","fsdf"]***,"link_list":"","image_container":{"image1":{"id":"","name":"Name","uri":""},"image2":{"id":"","name":"Name","uri":""}},"attached_thread":{"thread1":{"title":"","top_id":"","last_id":""},"thread2":{"title":"","top_id":"","last_id":""}},"to_user":["user1","user2"],"to_group":["group1","group2"]}
0 голосов
/ 07 декабря 2010

Я думаю, что вы пытаетесь сделать что-то вроде этого:

var reLen = re.length;
uploaded.tag_list = {};

for(var i = 0; i < reLen; i++)
{
    uploaded.tag_list['tag' + (i+1)] = re[i];
}

Будет выведен формат, который вы хотите увидеть, т.е.

'"tag_container": {"tag1": "*#Hello*", "tag2": "*#am*", "tag3": "*#h*"}'
0 голосов
/ 07 декабря 2010

Самый простой способ конвертировать что-либо в JSON - это использовать JSON.stringify.

var jsonString = JSON.stringify({ tag_container: { tag1: 'tag1', tag2: 'tag2' }});

stringify, доступный во всех современных браузерах.Если вы хотите поддерживать более старые версии, библиотека JSON2 , возможно, является лучшим выбором, поскольку она предоставляет тот же API, что и официальная спецификация JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...