【问题标题】:Replacing JSON file with CSV for d3js用 CSV 替换 d3js 的 JSON 文件
【发布时间】:2016-05-31 02:10:23
【问题描述】:

http://bl.ocks.org/robschmuecker/7880033

我是 javascript 和 d3 的新手。上面的例子是一个树状图。我可以创建自己的。但是,如果我想将它用于诸如员工数据之类的东西,除非我错过了一些更简单的技巧,否则总是不得不编辑 json 似乎会很痛苦。

我在其他图表中使用过的 excel 中的 csv 看起来会很好用。是否可以用带有数据的csv替换flare.json?如果有,怎么做?

【问题讨论】:

    标签: json csv d3.js


    【解决方案1】:

    不,这不可能直接。要知道原因,您必须了解函数 d3.csv 创建数组的方式。假设你有这个 CSV:

    foo, bar, baz
    21, 33, 5
    1, 14, 42
    

    解析时会生成单个对象数组,没有嵌套数组或嵌套对象。第一行定义键名,其他行定义值。这是为该 CSV 生成的数组:

    [
      {"foo": 21, "bar": 33, "baz": 5},
      {"foo": 1, "bar": 14, "baz": 42}
    ]
    

    或者,如果您不更改类型,则将数字作为字符串:

    [
      {"foo": "21", "bar": "33", "baz": "5"},
      {"foo": "1", "bar": "14", "baz": "42"}
    ]
    

    你不会得到任何接近你想要的东西,它是一个包含数组的对象数组,其中包含包含数组的对象等等......

    您可以稍后修改此数组以创建您需要的嵌套子级(查看下面的@torresomar 评论),但简单地编辑您的 JSON 会更容易。

    【讨论】:

    • 或者编写一个简单的程序为您将一种文件格式转换为另一种格式。如果您必须转换大量文件,这最终可能会快得多。
    • 是的,@GerardoFurtado 是对的,我试图为 CSV 提供一种分层方法,但这将非常麻烦,因为 CSV 不是一种允许您以简单方式进行分层的格式。如果您仍想延长 CSV 的使用范围,您可能需要查看 stackoverflow.com/questions/19043561/…,但我不建议这样做。
    • 这些反应很好。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2018-04-19
    • 2021-08-26
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多