D3 json解析Scala js

时间:2016-03-15 12:01:35

标签: d3.js scala.js

请scala js中的d3需要一些帮助。不知道如何使用d3.json函数。

我有这个:

val rectXFunVpc = (d: Vpcs,
                   i: Int) => {
  println(s"rectXFunVpc i:$i")
  i * 30
}

d3.json(
      "json-file.json", callback = (e: Any, json: Any) => {

        val jsonAsString: String = JSON.stringify(json.asInstanceOf[js.Any])
        println(s"jsonAsString: $jsonAsString")
        val pickledJson = read[domain.DescribeVpcsObject](jsonAsString)
        println(s"pickledJson:$pickledJson")

        val dataArray: js.Array[Vpcs] = pickledJson.Vpcs.asInstanceOf[js.Array[Vpcs]]
        println(s"dataArray:$dataArray")

        val sel: Update[Vpcs] = svg.selectAll("rect").data(dataArray)
        sel.enter()
          .append("rect")
          .attr("x", rectXFunVpc)
          .attr("y", 20)
          .attr("width", 20)
          .attr("height", 10)
          .style("fill", rectColorFun)

        print()

      }
    )

几个问题:

  1. 没有绘制rects,所以看起来dataArray不对,但是当我调试它时,我认为我得到了一个合适的js.Array [Vpcs]
  2. 从不调用rectXFuncVpc(我的printlns没有 打印在浏览器控制台中)
  3. Unit的返回类型强制我将print()作为函数的最后一个语句
  4. 有人可以给我一个例子吗?

1 个答案:

答案 0 :(得分:1)

如果没有Vpcs json格式,很难搞清楚。 这是你的json示例,带有一个简单的json:

https://github.com/spaced/scala-js-d3-example-app/tree/json_example

要强制执行Unit,您可以使用()