我有一个名为的文件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
变量。裁剪它们后,问题仍然出现。
第一次有对象时,键是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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句