2013-02-27 89 views
0

我現在使用HTMLV功能,並且想將有關DOM元素的信息存儲到JSON文件中。如何將JSON字符串顯式組織到數組

因此,我創建一個JSON文件是這樣的:

var pages= 
[ 
    { 
      "img_data_url": "test", 
     "stamp": 
     [ 
     {"src": "../pic/cake.png", 
     "pos_x": 1, 
     "pos_y": 1, 
     "id_name": "stamp00"   
     }, 
     {"src": "../pic/egg.png", 
     "pos_x": "2", 
     "pos_y": "2", 
     "id_name": "stamp01" 
     }, 
     {"src": "../pic/sugar.png", 
     "pos_x": "3", 
     "pos_y": "3", 
     "id_name": "stamp02" 
     }, 
     {"src": "../pic/potato.png", 
     "pos_x": "4", 
     "pos_y": "4", 
     "id_name": "stamp03" 
     }, 
     {"src": "../pic/banana.png", 
     "pos_x": "5", 
     "pos_y": "5", 
     "id_name": "stamp04" 
     }  
     ]  
    } 
    , 
    { 
     "img_data_url": "test", 
     "stamp": 
     [ 
     {"src": "../pic/f.png", 
     "pos_x": "1", 
     "pos_y": "1", 
     "id_name": "stamp10"   
     }, 
     {"src": "../pic/g.png", 
     "pos_x": "2", 
     "pos_y": "2", 
     "id_name": "stamp11" 
     }, 
     {"src": "../pic/h.png", 
     "pos_x": "3", 
     "pos_y": "3", 
     "id_name": "stamp12" 
     }, 
     {"src": "../pic/i.png", 
     "pos_x": "4", 
     "pos_y": "4", 
     "id_name": "stamp13" 
     }, 
     {"src": "../pic/j.png", 
     "pos_x": "5", 
     "pos_y": "5", 
     "id_name": "stamp14" 
     } 
     ]  
    }   
] 

我檢索存儲在DOM元素來創建每個「{}」段相關的數據。

寫:

var json_obj={}; 
json_obj["src"] = "../pic/cake.png"; 
json_obj["pos_x"] = 1; 
json_obj["pos_y"] = 1; 
json_obj["id_name"] = "stamp00"; 
var json_string= JSON.stringify(json_obj); 

我:
"{"src":"../pic/cake.png","pos_x":1,"pos_y":1,"id_name":"stamp00"}"

但我怎麼能組織的數據結構是這樣的:
"stamp": [] <-- An array consists of lots of JSON strings I created above."
問題:
1.是否兩個雙引號字符(在第一個和最後一個位置) n)「在
"{"src":"../pic/cake.png","pos_x":1,"pos_y":1,"id_name":"stamp00"}" 多餘?
他們爲什麼出現?
它們會影響我的操作來檢索JSON文件中的數據嗎?
2.我想另外的辦法,而不是寫:

var str= "\"stamp\":["; 
str += json_string; 

得到
""stamp":[{"src":"../pic/cake.png","pos_x":1,"pos_y":1,"id_name":"stamp00"}"

更聰明和正確的做法?

+0

也許你根本不需要JSON。你說的是「JSON文件」實際上是一個JavaScript對象文字。一個JSON將是一個字符串表示。如果你的目標是'var pages = [...]',你不需要JSON。 – bfavaretto 2013-02-27 02:23:20

+0

@bfavaretto那麼我應該採用什麼? – Stallman 2013-02-27 02:35:20

+0

數據來自哪裏? – bfavaretto 2013-02-27 02:42:41

回答

1

不要直接混淆JSON字符串。只需創建你想要的結構並將其加以細化即可。

var json_obj={}; 
json_obj["src"] = "../pic/cake.png"; 
json_obj["pos_x"] = 1; 
json_obj["pos_y"] = 1; 
json_obj["id_name"] = "stamp00"; 

var json_document = { 
    stamp: [ json_obj ], // you probably want to build this array separately 
}; 
JSON.stringify(json_document); 

你看到的外部引號是表明它是一個JavaScript字符串。內部引號(您應該看到轉義,\?)是JSON格式的一部分。

+0

你的意思是如果我想添加另一個JSON字符串,我應該寫郵票:[json_obj,「json_obj2」]? 我想在數組中創建大量的JSON字符串。 – Stallman 2013-02-27 02:10:21

+1

你不想在數組中使用JSON字符串。你想_an array_,然後你想把它變成一個JSON字符串。你可以創建一個數組並使用'.push()'在循環中添加更多項目,如果這就是你正在做的。 – Eevee 2013-02-27 02:11:09

+0

好的...我會試試看。但是「戳記」字符串和數組[]是值。 – Stallman 2013-02-27 02:17:11