我有一个名为test.json
的文件。我需要将其内容加载到数组中,使其可以编辑然后将其放回到json字符串中,因此我可以将其放入新文件中。
问题是,即使我加载文件,将其转换为对象,然后转换为数组并最终转换为json字符串,它也不一样。它失去了一些价值。的为什么吗
var request = new XMLHttpRequest(); //load a file
request.open("GET", "levels/test.json", false);
request.send(null)
var mapTile = jQuery.parseJSON(request.responseText); //convert json to object
var array = $.map(mapTile, function(value, index) {
return value;
}); //convert object to array
// code to modify array [...]
var backToString = JSON.stringify(array); //convert array to json file
这是原创的json文件:
{
"1": {
"1": { "type":"rock", "type2":"solid" },
"2": { "type":"rock", "type2":"solid" },
"3": { "type":"rock", "type2":"solid" },
"4": { "type":"rock", "type2":"solid" } },
"2": {
"1": { "type":"rock", "type2":"solid" },
"2": { "type":"rock", "type2":"solid" },
"3": { "type":"rock", "type2":"solid" },
"4": { "type":"rock", "type2":"solid" } }
}
如果您没有看到差异,则导致"1"
和"2"
缺少输出字符串,使其无法读取。
我正在使用最新的稳定版Chromium。
编辑:我确实在[
变量周围发现了]
和backToString
。裁剪后,问题仍然存在。
答案 0 :(得分:0)
第一次有对象时,键是1和2。
你有一个数组,所以第一个键是0和第二个1.你别无选择。
在String中转换JSON数组后。键0和1丢失。这只是JSON中数组的表示形式:
var t = [{name:"max"},{name:"john"}];
这里没有钥匙!那是正常的
如果您想保留钥匙,可以尝试:
var k = 1;
var array = $.map(mapTile, function(value, index) {
var o = {};
o[k] = value;
k += 1;
return o;
}); //convert object to array
答案 1 :(得分:0)
您需要将数组转换回对象,否则您将丢失密钥。
var back = {}; // empty object
for (var i = 0; i < array.length; i++) {
back[i + 1 + ""] = array[i]; // add array elements to it
}
var backToString = JSON.stringify(back); //convert array to json file