【问题标题】:how to convert text file to json in javascript [closed]如何在javascript中将文本文件转换为json [关闭]
【发布时间】:2016-07-07 07:49:19
【问题描述】:

我有一个像下面这样的文本文件

id      nm              lat         lon         countryCode
819827  Razvilka        55.591667   37.740833   RU
524901  Moscow          55.752220   37.615555   RU
1271881 Firozpur        27.799999   76.949997   IN

我需要转换成如下格式的json

[{"id":819827,"nm":"Razvilka","lat":55.591667,"lon":37.740833,"countryCode":"RU"},
{"id":524901,"nm":"Moscow","lat":55.752220,"lon":37.615555,"countryCode":"RU"},
{"id":1271881,"nm":"Firozpur","lat":27.799999,"lon":76.949997,"countryCode":"IN"}]

对于 javascript 应用程序。

myapp.controller('TCtrl', ['$scope', '$http', function($scope, $http) {
  $http.get('list.txt').success(function(data) {
    $scope.todos = JSON.parse(data);
    //console.log(data)
  });
}]);

【问题讨论】:

  • 嘿lxe,我已经添加了我拥有的一段代码
  • 没有标准的方法来做你想做的事,但你可以使用一个 csv 解析库,比如这个:papaparse.com

标签: javascript json


【解决方案1】:

1) 通过在回车符(行)上拆分字符串来获取单元格数组,然后使用map 根据空格上的行拆分返回一个新数组。

var cells = str.split('\n').map(function (el) { return el.split(/\s+/); });

2) 标题是cells 中的第一个嵌套数组。

var headings = cells.shift();

3) map 在单元格上构建并根据值返回一个新对象。

var obj = cells.map(function (el) {
  var obj = {};
  for (var i = 0, l = el.length; i < l; i++) {
    obj[headings[i]] = isNaN(Number(el[i])) ? el[i] : +el[i];
  }
  return obj;
});

4) 将返回的对象字符串化。

var json = JSON.stringify(obj);

输出

[
  {
    "id": 819827,
    "nm": "Razvilka",
    "lat": 55.591667,
    "lon": 37.740833,
    "countryCode": "RU"
  },
  {
    "id": 524901,
    "nm": "Moscow",
    "lat": 55.75222,
    "lon": 37.615555,
    "countryCode": "RU"
  },
  {
    "id": 1271881,
    "nm": "Firozpur",
    "lat": 27.799999,
    "lon": 76.949997,
    "countryCode": "IN"
  }
]

DEMO

【讨论】:

  • 我的输入碰巧也有 \r\n 这不考虑。知道如何处理吗?
  • 您可以在拆分中使用正则表达式。见这里:stackoverflow.com/questions/10805125/…
  • 您的解决方案效果很好,谢谢!但是我有空行的问题(例如在导出的 txt 文件的末尾)。如何实现这一点以删除或跳过代码中的任何空行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2019-01-06
  • 2016-04-12
  • 1970-01-01
相关资源
最近更新 更多