我d3.json
用来加载包含我的数据的JSON文件,如下所示:
var data = d3.json(url, callback)
如果我做一个,console.log(data)
我可以看到data
既不是空的也不是null
。但是,它似乎不包含我的数据数组,而是包含其他内容。
我在这里做错了什么?
注意:这是一个自我回答的问题,试图对以前很多问题都涉及到且API未明确解释的主题提供“规范”的问答。以下答案是对这些问题的一般指导。
d3.json
(以及d3.csv
,d3.tsv
等)不返回加载/解析的文件的内容。取而代之的是,它返回与请求相关的对象(caveat,lector:在使用Promise的D3
v5中,返回的值不同,请参见下文)。
d3.json
是XMLHttpRequest
D3提供的替代方法之一。根据API,d3.json
…
返回一个新请求,以默认的mime类型application / json在指定的url获取JSON文件。
……我们可以同意,这一点并不特别清楚。因此,您可能以为可以使用来返回已 加载的数据var data = d3.json(url, callback)
,但这是不正确的。什么d3.json
返回是一个 对象 (未数组),与请求相关联。让我们来看看它。
我在文件中有此JSON:
[{
"name": "foo",
"value": 42
}, {
"name": "bar",
"value": 12
}, {
"name": "baz",
"value": 34
}]
如果我们d3.json
在您的问题中使用您的用法会怎样?点击“运行代码段”以查看:
var data = d3.json("https://api.myjson.com/bins/k4xqn", function() {});
console.log(data)
<script src="https://d3js.org/d3.v4.min.js"></script>
如您在控制台中看到的,我们有一个像这样的对象:
{header: ƒ, mimeType: ƒ, responseType: ƒ, timeout: ƒ, user: ƒ, …}
好吧,这不是我们的数据数组。
如果使用函数,也会发生相同的事情:
function getData() {
return d3.json("https://api.myjson.com/bins/k4xqn", function() {})
}
var data = getData()
console.log(data)
<script src="https://d3js.org/d3.v4.min.js"></script>
另外,值得一提的是d3.csv
,d3.tsv
以及其他请求方法也会发生相同的情况:
var data = d3.csv("https://www.ibm.com/support/knowledgecenter/SVU13_7.2.1/com.ibm.ismsaas.doc/reference/AssetsImportCompleteSample.csv", function() {});
console.log(data)
<script src="https://d3js.org/d3.v4.min.js"></script>
d3.json
正如您在几个在线示例中看到的那样,使用加载数据的正确方法是使用其回调:
d3.json(url, function(data){
//use data here...
});
这是我们的JSON文件的代码段:
d3.json("https://api.myjson.com/bins/k4xqn", function(data) {
console.log(data)
})
<script src="https://d3js.org/d3.v4.min.js"></script>
您还可以调用另一个函数:数据将作为第一个参数传递。这是一个演示:
d3.json("https://api.myjson.com/bins/k4xqn", callback)
function callback(data) {
console.log(data)
}
<script src="https://d3js.org/d3.v4.min.js"></script>
D3 v5
在D3 V5, d3.json
(以及d3.csv
,d3.tsv
等)返回一个承诺:
var data = d3.json("https://api.myjson.com/bins/k4xqn");
console.log(data)
<script src="https://d3js.org/d3.v5.min.js"></script>
问题内容: 我在EmployeeController中具有以下示例代码,该代码创建了几个雇员,将其添加到雇员列表中,然后在get请求中返回该雇员列表。从代码返回的JSON包含Employees作为根节点。我需要返回不带Employees属性的JSON数组,因为每当我尝试将JSON结果解析为对象时,除非手动将字符串重新格式化为不包含它,否则都会收到错误消息。 这是调用控制器时收到的JSON结果 这是
我试图使用CSV文件将用户列表添加到我在租户中设置的AzureAD组。脚本似乎正在工作,但由于某种原因,我的一个If语句中的一个特定写主机没有按预期显示变量数据。我在所有其他写主机中使用相同的变量,它们都可以工作,所以我不确定这里缺少了什么。 如果重要的话,我的CSV看起来像这样: 这是我简化的PS片段。 问题出在 If 语句的写入主机结果上,当用户已在组中时,会发生该语句。 在我的示例中,tes
我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。
null 但是,每当我尝试将turbine添加到这个堆栈时,/turbine.stream只返回在浏览器上重复执行,结果Hystrix仪表板显示 有人能帮我找出哪里出了问题吗? 以下是我对涡轮的关键配置。TurbineAppliation类只是一个带有@enableTurbineStream的springboot应用程序,所以下面没有列出它。
widgets库捕获的异常接收者:null尝试调用:notListesiniGetir() 图3此处代码: 错误代码接收者:null尝试调用:notListesiniGetir() 相关的导致错误的小部件是:Notlar file://c://flutter%20calismalari/not_sepeti/lib/main.dart:63:27抛出异常时,这是堆栈:#0object.nosuch
如您所见,它将参数和的和保存在变量中,然后将包含它们的和的eax寄存器保存在变量中,就像函数返回值一样。 这样做是因为函数是用返回值定义的吗?