首页 > 解决方案 > 如何将分隔文本转换为 JSON

问题描述

分隔文本文件(文件名是数据)=>

01 - Rental Details Rental ID,01 - Rental Details Local Start Time,01 - Rental Details Local End Time,01 - Rental Details Bike ID,01 - Rental Details Duration In Seconds Uncapped,03 - Rental Start Station ID,03 - Rental Start Station Name,02 - Rental End Station ID,02 - Rental End Station Name,User Type,Member Gender,05 - Member Details Member Birthday Year
22178529,2019-04-01 00:02:22,2019-04-01 00:09:48,6251,446.0,81,Daley Center Plaza,56,Desplaines St & Kinzie St,,Male,1975
22178530,2019-04-01 00:03:02,2019-04-01 00:20:30,6226,"1,048.0",317,Wood St & Taylor St,59,Wabash Ave & Roosevelt Rd,Subscriber,Female,1984

转换后的 JSON 文件(文件名为 data.JSON)

{
    "01 - Rental Details Rental ID": "22178529",
    "01 - Rental Details Local Start Time": "2019-04-01 00:02:22",
    "01 - Rental Details Local End Time": "2019-04-01 00:09:48",
    "01 - Rental Details Bike ID": "6251",
    "01 - Rental Details Duration In Seconds Uncapped": "446.0",
    "03 - Rental Start Station ID": "81",
    "03 - Rental Start Station Name": "Daley Center Plaza",
    "02 - Rental End Station ID": "56",
    "02 - Rental End Station Name": "Desplaines St & Kinzie St",
    "User Type": "Subscriber",
    "Member Gender": "Male",
    "05 - Member Details Member Birthday Year": "1975",
},
{
    "01 - Rental Details Rental ID": "22178529",
    "01 - Rental Details Local Start Time": "2019-04-01 00:02:22",
    "01 - Rental Details Local End Time": "2019-04-01 00:09:48",
    "01 - Rental Details Bike ID": "6251",
    "01 - Rental Details Duration In Seconds Uncapped": "446.0",
    "03 - Rental Start Station ID": "81",
    "03 - Rental Start Station Name": "Daley Center Plaza",
    "02 - Rental End Station ID": "56",
    "02 - Rental End Station Name": "Desplaines St & Kinzie St",
    "User Type": "Subscriber",
    "Member Gender": "Male",
    "05 - Member Details Member Birthday Year": "1975",
}

标签: javascriptjson

解决方案


如果它是一个简单的 CSV 格式,这可能会有所帮助:

function convert(csv) {
  const result = {};
  const lines = csv.split('\n').map(line => line.split(','));

  for (let i = 0; i < lines[0].length; i++) {
    result[lines[0][i]] = lines[1][i];
  }
  return result;
}

PS。假设有确切的 2 行(标题和值),每行内的值以逗号分隔。


推荐阅读