gpt4 book ai didi

javascript - Node - 如何从本地文件正确读取 json?

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:03 26 4
gpt4 key购买 nike

我正在使用 node.js 提供一个页面 (index.html),在其中我使用 vis.js 可视化网络图。 。为了使用此库绘制网络图,需要提供 nodesedges json 数组 ( see example )。

// create an array with nodes
var _nodes_ = [
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
];


// create an array with edges
var _edges_ = [
{from: 1, to: 2},
{from: 1, to: 3},
{from: 2, to: 4},
{from: 2, to: 5}
];

我的 index.html 文件的第一个版本如下所示:

<!doctype html>
<html>
<head>
<title>Network | Basic usage</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vis.js"></script>
</head>

<body>

<div id="mynetwork"></div>

<script type="text/javascript" >


// create an array with nodes
var _nodes_ = [
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
];


// create an array with edges
var _edges_ = [
{from: 1, to: 2},
{from: 1, to: 3},
{from: 2, to: 4},
{from: 2, to: 5}
];

console.log(_nodes_);
console.log(_edges_);


// create a network
var container = document.getElementById('mynetwork');
var data= {
nodes: _nodes_,
edges: _edges_,
};
var options = {
autoResize: true,
clickToUse: false,
width: '800px',
height: '800px'
};
var network = new vis.Network(container, data, options);
</script>

</body>
</html>

而且它工作得很好。但是,当我尝试从本地文件读取 nodesedges 数组时,网络图不会显示:

<!doctype html>
<html>
<head>
<title>Network | Basic usage</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vis.js"></script>
</head>

<body>

<div id="mynetwork"></div>

<script type="text/javascript" >
// create an array with nodes

var _nodes_;
var _edges_;

$.getJSON('json/nodes.json', function(nodes) {
_nodes_= nodes;
});

$.getJSON('json/edges.json', function(edges) {
_edges_ = edges;

});



console.log(_nodes_);
console.log(_edges_);


// create a network
var container = document.getElementById('mynetwork');
var data= {
nodes: _nodes_,
edges: _edges_,
};
var options = {
autoResize: true,
clickToUse: false,
width: '800px',
height: '800px'
};
var network = new vis.Network(container, data, options);
</script>

</body>
</html>

我正在使用:

  • nodes.json:

    [ { “id”:1, "标签": "Node 1" }, { “id”:2, "标签": "Node 2" }, { “id”:3, "标签": "Node 3" }, { “id”:4, "标签": "Node 4" }]

  • edges.json:

    [ { “来自”:1, “至”:2 }, { “来自”:1, “至”:3 }, { “来自”:1, “到”:4 }]

在 JavaScript 中创建 json 和从文件读取有区别吗?有人可以帮我找出这里的错误吗?

谢谢!

最佳答案

Ajax 默认情况下是异步的,因此您必须在加载数据后绘制图表!

或者您可以使用 DataSetadd 函数在加载 Node 和边后添加它们。

这是一个工作示例:

var _nodes = new vis.DataSet();
var _edges = new vis.DataSet();

var container = document.getElementById('mynetwork');
var data = {
nodes: _nodes,
edges: _edges,
};
var options = {
autoResize: true,
clickToUse: false
};
var network = new vis.Network(container, data, options);

$.getJSON('//gist.githubusercontent.com/mojoaxel/b9ed2fe1ff7154b339d6ffde555f0606/raw/6d9b1c4e0b642ab05837ee60a6c6ca9f64b9995f/edges.json', function(edges) {
_edges.add(edges);
});
$.getJSON('https://gist.githubusercontent.com/mojoaxel/b9ed2fe1ff7154b339d6ffde555f0606/raw/6d9b1c4e0b642ab05837ee60a6c6ca9f64b9995f/nodes.json', function(nodes) {
_nodes.add(nodes);
});
#mynetwork {
width: 100%;
height: 100%;
border: 1px solid gray;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis.min.js"></script>
</head>
<body>
<div id="mynetwork"></div>
</body>
</html>

关于javascript - Node - 如何从本地文件正确读取 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com