一世
大家好,我是 javascript/D3.js 编程的新手。我需要调整一个代码,我觉得有点失落。

主要问题是: 如何在 javascript 中保存 JSON 数据集

当前代码正在加载一个大的 csv 文件,对其进行解析和格式化。
我想在另一个程序中移动文件管理部分,但是为了 直接获取格式良好的文件 ,我想通过运行此代码并保存输出(即: json = buildHierarchy(csv); )来直接保存它。

感谢 的帮助!

d3.text("myfile.csv", function(text) {
  var csv = d3.csv.parseRows(text);
  var json = buildHierarchy(csv);  //-- THIS IS WHAT I NEED TO SAVE (OR SEE)
});

// function to adjust data

function buildHierarchy(csv) {
  var root = {"name": "root", "children": []};
  for (var i = 0; i < csv.length; i++) {
    var sequence = csv[i][0];
    var size = +csv[i][1];
    if (isNaN(size)) { // e.g. if this is a header row
      continue;
    }
    var parts = sequence.split("-");
    var currentNode = root;
    for (var j = 0; j < parts.length; j++) {
      var children = currentNode["children"];
      var nodeName = parts[j];
      var childNode;
      if (j + 1 < parts.length) {
   // Not yet at the end of the sequence; move down the tree.
 	var foundChild = false;
 	for (var k = 0; k < children.length; k++) {
 	  if (children[k]["name"] == nodeName) {
 	    childNode = children[k];
 	    foundChild = true;
 	    break;
 	  }
 	}
  // If we don't already have a child node for this branch, create it.
 	if (!foundChild) {
 	  childNode = {"name": nodeName, "children": []};
 	  children.push(childNode);
 	}
 	currentNode = childNode;
      } else {
 	// Reached the end of the sequence; create a leaf node.
 	childNode = {"name": nodeName, "size": size};
 	children.push(childNode);
      }
    }
  }
  return root;
};

最佳答案

我终于设法使用 https://github.com/eligrey/FileSaver.js/saveAs 函数保存了我的文件

var blob = new Blob([JSON.stringify(json)], {type: "text/plain;charset=utf-8"});
saveAs(blob, "sequence_dl.JSON");

关于javascript - 如何保存 d3.js 脚本中内置的 JSON 数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46399237/

10-12 12:17
查看更多