如何将tsv转换为Json [英] How convert tsv to Json

查看:534
本文介绍了如何将tsv转换为Json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想根据一个json文件制作动态图。我看过很多例子,但是我不知道如何把它转换成json。
这是我要从tsv更改为json的部分,但我不知道如何!

  d3.tsv (data / data.tsv,function(error,data){
data.forEach(function(d){
d.date = parseDate(d.date);
d。关闭= + d.close;
});

当我使用

  d3.json(data / data.json,function(data){
data.forEach(function d){
d.date = parseDate(d.date);
d.close = + d.close;
}

});

它给出了这个错误:未捕获类型错误:无法调用方法'forEach'未定义!



感谢您的建议:)

解决方案

这里有一个小代码,您可以将tsv转换为JSON。它可以帮助你...



ps:这里是typcript,但是你可以很容易的将它转换成vanilla javascript;)

  //将数据集设置为格式对象
tsvToJson(datas:string):Array< Object> {
//将每行分开
让array_datas = datas.split(/ \\\
| \r | \\\
/ g);

//将每个值分成每行
var detailed_datas = []; (var i = 0; i detailed_datas.push(array_datas [i] .split(\t))

}

//创建索引
var index = [];
var last_index =; //如果我们正在读取的索引等于,这意味着它可能是一个数组,所以我们取最后一个索引
(var i = 0; i< detail_datas [0] .length; i ++ ){
if(detailed_datas [0] [i] ==)index.push(last_index);
else {
index.push(detailed_datas [0] [i]);
last_index = detailed_datas [0] [i];
}
}

//从索引
中分离数据detail_datas.splice(0,1);

//格式数据
var formated_datas = []; (var i = 0; i< detail_datas.length; i ++){
var row = {};

for(var j = 0; j< detail_datas [i] .length; j ++){
//检查值是否为空
if(detailed_datas [i] [j]!= ){
if(typeof row [index [j]] ==object){
//它已经设置为数组
row [index [j]]。 (detailed_datas [i] [j]);
} else if(row [index [j]]!= undefined){
//已经有一个值,所以它可能是一个数组
row [index [j]] = [ row [index [j]],detail_datas [i] [j]];
} else {
//现在是空的,所以我们先说一下它是一个字符串
row [index [j]] = detailed_datas [i] [j];
}
}
}
formated_datas.push(row);
}
console.log(formated_datas); // @TODO:remove this
return formated_datas;
}


I want to make a dynamic graph based on a json file. I have seen many examples with tsv but I donot how to convert it to json. That is the part that I want to change from tsv to json but I donot know how!

d3.tsv("data/data.tsv", function(error, data) {
  data.forEach(function(d) {
    d.date = parseDate(d.date);
    d.close = +d.close;
  });

when I use

d3.json("data/data.json", function(data) {
    data.forEach(function d) { 
        d.date = parseDate(d.date);
        d.close = +d.close;
    }

});

it gives this error: Uncaught type error: cannot call method 'forEach' of undefined!

Thanks for your suggestions :)

解决方案

Here a small code where you'll be able to convert tsv to json. It could help you...

ps : here is typescript, but you can easily convert it to vanilla javascript ;)

// Set bunch of datas into format object
tsvToJson(datas: string): Array<Object>{
    // Separate each lines
    let array_datas = datas.split(/\r\n|\r|\n/g);

    // Separate each values into each lines
    var detailed_datas = [];
    for(var i = 0; i < array_datas.length; i++){
        detailed_datas.push(array_datas[i].split("\t"));
    }

    // Create index
    var index = [];
    var last_index = ""; // If the index we're reading is equal to "", it mean it might be an array so we take the last index
    for(var i = 0; i < detailed_datas[0].length; i++){
        if(detailed_datas[0][i] == "") index.push(last_index);
        else {
            index.push(detailed_datas[0][i]);
            last_index = detailed_datas[0][i];
        }
    }

    // Separate data from index
    detailed_datas.splice(0, 1);

    // Format data
    var formated_datas = [];
    for(var i = 0; i < detailed_datas.length; i++){
        var row = {};
        for(var j = 0; j < detailed_datas[i].length; j++){
            // Check if value is empty
            if(detailed_datas[i][j] != ""){
                if(typeof row[index[j]] == "object"){
                    // it's already set as an array
                    row[index[j]].push(detailed_datas[i][j]);
                } else if(row[index[j]] != undefined){
                    // Already have a value, so it might be an array
                    row[index[j]] = [row[index[j]], detailed_datas[i][j]];
                } else {
                    // It's empty for now, so let's say first that it's a string
                    row[index[j]] = detailed_datas[i][j];
                }
            }
        }
        formated_datas.push(row);
    }
    console.log(formated_datas); // @TODO : remove this
    return formated_datas;
}

这篇关于如何将tsv转换为Json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆