angularjs - 如何将大字符串对象转换为键/值对的块

时间:2016-11-12 21:50:46

标签: javascript angularjs arrays json object

我从文本文件中获取数据,即sample_resume.txt

姓名:John Doe 电话:(555)555-5555 电子邮件:johndoe@example.com

目标 Excel在Web开发人员的职业生涯中。

关键技能 开发:HTML5,JavaScript,Bootstrap,AngularJS,ReactJS,CSS3,媒体查询,开发 项目管理:JIRA,Bitbucket,Confluence,Git,GitHub

就业历史 标题:初级Web开发人员 公司:Apple Inc. 日期:2015年6月至2016年9月 *开发响应式企业网站 *做了一些很酷的东西 *领导团队关闭JIRA错误

使用控制器将其导入我的角度项目中 app.controller('MainController',函数($ scope,$ http){

$http.get('../../documents/sample_resume.txt')
    .then(function (data) {
        $scope.info = data;


    }, function (error) {

        alert('error');
    });

});

我期望Json格式的输出被分成数据的键值对,但输出是

{“data”:“姓名:John Doe \ r \ n电话:(555)555-5555 \ r \ n电子邮件:johndoe@example.com \ r \ n \ r \ n \ n \ n \ n \ n \ n \参与\ r \ n \ n \ nExcel在Web开发人员中职业生涯。\ r \ n \ r \ nKEY SKILLS \ r \ n开发:HTML5,JavaScript,Bootstrap,AngularJS,ReactJS,CSS3,媒体查询,开发\ r \ n项目管理:JIRA,Bitbucket,Confluence,Git,GitHub \ r \ n \ r \ nEPLPLOYMENT HISTORY \ r \ n标题:Junior Web Developer \ r \ n公司:Apple Inc. \ r \ n日期:2015年6月至2016年9月\ r \ n *开发响应式企业网站\ r \ n *做了一些很酷的东西\ r \ n *领导团队关闭JIRA错误\ r \ n \ r \ n标题:Web开发实习生\ r \ n公司:Google Inc. \ r \ n日期:2015年1月至2015年5月\ r \ n *去喝咖啡为团队运行\ r \ n *最长桶架的团队记录\ r \ n *在团队建设活动期间曾吃过82块蛋糕\ r \ n \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \大学\ r \ n \ nGPA:2.2 \ r \ n主要:计算机科学\ r \ nMinor:饮用“,”状态“:200,”config“:{”method“:”GET“,”transformRequest“:[null],” transformResponse “:[空],” 网址“:”../../ documents / sample_resume.txt“,”headers“:{”Accept“:”application / json,text / plain, / “}},”statusText“: “OK”}

我需要数据,分成键值对,如: {“姓名”:“John Doe”, 电话:(555)555-5555}

1 个答案:

答案 0 :(得分:0)

好的,如果将文本解析为由文本中的“:”分割的键值对数组,则此代码将执行您想要的操作。但是,如果您实际控制此文本文件输出,我会考虑将其设置为具有您需要的确切结构的json文件。

我在这里假设AngularJS,因此将“kvp”数组放在范围内。

var lines = response.data.split('\r\n'); //split by the newlines
$scope.kvp = [];
lines.forEach(function(line, index) {
  var pair = line.split(':'); //split by colon
  if (pair.length === 2) { //do we have a pair?
    $scope.kvp.push({
      key: pair[0],
      value: pair[1]
    });
  } else {
    if (index > 0) {
      if ($scope.kvp[$scope.kvp.length - 1]) {
        $scope.kvp[$scope.kvp.length - 1].value += pair[0]; //append last known pair
      }
    }
  }
});

这是一个有效的JSFiddle: https://jsfiddle.net/workingClassHacker/shL8od16/7/