我的 JSON文件 data.json
包含以下内容:
[
{
"name": "Alice",
"number": 10
},
{
"name": "Bob",
"number": 20
},
{
"name": "Mary",
"number": 50
}
]
我想阅读这个JSON文件并将key: number
的值提取到数组中:
number_array = [10, 20, 50]
这是我的方式:
首先我读取 JSON文件为字符串
function readTextFile(file) {
var raw_text;
var rawFile = new XMLHttpRequest();
rawFile.overrideMimeType("application/json");
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4 && rawFile.status == "200") {
raw_text = rawFile.responseText;
}
}
rawFile.send(null);
return raw_text;
}
然而,当我调用此函数时,
var result = readTextFile('data.json')
我无法获得正确的结果,只有undefined
。
我问我怎样才能读取JSON文件并将其存储到全局变量中(不仅仅是在函数局部变量中)。谢谢。
答案 0 :(得分:1)
尽管已将此问题标记为“重复”,但我相信OP有几点值得一提:
首先,如果您使用的是D3,则无需使用XMLHttpRequest
来获取JSON。 D3有一个功能:
d3.json("filename.json", function(data){
//code using `data`
});
其次,最重要的是:为什么要将JSON存储在全局变量中?绝对没有理由这样做。一旦d3.json
加载了你的json,你就可以在回调中做所有事情。
例如,在回调中,您只需map
data
数组即可获得所需的结果(一旦d3.json
在SO片段中无效,我正在使用变量在这里):
var data = [{"name": "Alice","number": 10},
{"name": "Bob","number": 20},
{"name": "Mary","number": 50}];
var newData = data.map(function(d){ return d.number});
console.log(newData);
总而言之,这是代码:
d3.json("filename.json", function(data){
var newData = data.map(function(d){ return d.number});
});