2010-12-07 27 views
0

我無法按以下格式創建Json字符串,請幫助。當鍵值對可以是一個數字:在javascript中創建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*"}] 
+1

對不起,你能解釋一下嗎?首先,代碼根本不會創建「字符串」。其次,輸出格式的問題究竟是什麼? – deceze 2010-12-07 05:03:39

回答

3

認爲也許你可能會混淆JSON對象與文字語法。

相反的:

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

你應該只使用普通JS語法:

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

...但它真的很難從您的文章告訴。如果你認識任何能夠幫助你學習英語的人,這可能會幫助我(和其他人)更好地理解這個問題。

0

將東西轉換爲JSON的最簡單方法是使用JSON.stringify

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

stringify適用於所有現代瀏覽器。如果您希望支持舊版本,JSON2 library可能是最佳選擇,因爲它提供了與官方JSON規範相同的API。

0

我認爲你正在試圖做的是這樣的:

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*"}' 
-1

謝謝大家的所有回覆並指導我的問題解決了一些其他方式我發送json字符串跨域

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

並生成jso n字符串是

{"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"]}