如何清楚地将JSON字符串组织到数组中

时间:2013-02-27 01:57:59

标签: javascript json

我现在正在使用HTMLV功能,我想将有关DOM元素的信息存储到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.两个双引号字符(在第一个和最后一个位置)是否在“ "{"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"}"

任何更聪明,更正确的方法?

1 个答案:

答案 0 :(得分: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格式的一部分。