将3D数组转换为JSON并将其保存在文件(JS)中

时间:2018-04-04 00:15:11

标签: javascript arrays json

如何在JavaScript中将我的3D数组保存到JSON文件中?我怎样才能读取JSON并将其转换回3D数组?

数组的格式为[x][y][k]。 我使用这个数组来映射棋盘,其中x,y是坐标,k是0或1或2代表颜色。

数组如下所示:[0,0,0],[0,1,0],[0,2,1],[0,3,2],...,[18,18,0]

以下列方式初始化数组:

var chessBoard = [];
for(var i = 0; i < 15; i++){
    chessBoard[i] = [];
    for(var j = 0; j < 15; j++){
        chessBoard[i][j] = 0;
    }
}

我希望每按一下按钮就能保存这个数组。怎么办呢?

2 个答案:

答案 0 :(得分:1)

您可以使用JSON.stringify ()将数组转换为JSON数据字符串,并且可以使用JSON.parse ()将JSON数据字符串转换回实际数组。

喜欢这个......

/* YOUR CODE */
var chessBoard = [];
for(var i = 0; i < 15; i++){
    chessBoard[i] = [];
    for(var j = 0; j < 15; j++){
        chessBoard[i][j] = 0;
    }
}

// Convert array into JSON data string
var chessJSON = JSON.stringify (chessBoard);

// Convert JSON data string back into array
var chessBoard = JSON.parse (chessJSON);

但是,您不能将JSON数据写入普通JavaScript中的文件中。您可以在Node.js和其他服务器端JavaScript中,但不能在浏览器中使用JavaScript。如果JavaScript在浏览器中运行,您需要将数据发送到服务器端程序,或者为用户提供数据的下载链接。

答案 1 :(得分:1)

chessBoard是一个对象,所以它当然可以很容易地序列化和下载:

const chessBoard = [];
for (let i = 0; i < 15; i++) {
  chessBoard[i] = [];
  for (let j = 0; j < 15; j++) {
    chessBoard[i][j] = 0;
  }
}

download(JSON.stringify(chessBoard), 'chessboard.json', 'application/json');

function download(content, name, type) {
  const a = document.body.appendChild(document.createElement('a'));
  const file = new Blob([content], {
    type: type
  });
  a.href = URL.createObjectURL(file);
  a.download = name;
  a.click();
}