将JSON映射到ES6类

时间:2016-06-20 17:06:29

标签: javascript json class coffeescript ecmascript-6

我的员工在json文件中,并且有想法将这些数据用于ES6类。我越用这个工作,我就越觉得我可能会遗漏一些东西。我这样做是在coffeescript中工作的:

vimeoVids.request({
  path: '/users/<User Name>/videos/<Video ID>'
}, function(e, data){
   if(e){
     console.log(e);
   }
   res.send(data);
 })

但后来我觉得如果我能把它转换成ES6会更好。我知道用例很简单,并且类当然不是必需的,因为我只是使用数据进行模板化,但是,为了学习,我试图这样做。我是以错误的方式来做这件事的吗?现在,我觉得应该有一种方法可以归还我放入fetch = require('node-fetch') domain = 'domain.com' apiSrc = 'api.domain.com' slug = 'people' class Person constructor: (json) -> {name: @name, title: @title, school: @school, bio: @bio} = json email: (username) -> username.replace(/\s/, '.').toLowerCase() + '@' + domain profile: -> content = [] if this.name then content.push("#{@name}") if this.title then content.push("#{@title}") if this.school then content.push(school) for school in "#{@school}" if this.bio then content.push("#{@bio}") if this.name then content.push(this.email("#{@name}")) content.join('') fetch('http://' + apiSrc + '/' + slug + '.json') .then((response) -> response.json()) .then((api) -> content = [] group = [] group.push(new Person(them)) for them in api[slug] for them, index in group content.push(them.profile()) console.log(content.join('')) ) 课程的所有“人”。但是,我能弄清楚如何做到这一点的唯一方法是运行for循环然后将其写入文档。

Person

我的ES6转换实际上现在还没有工作。 API返回JSON,但之后就搞砸了。任何建议都会非常有用,因为我正努力让自己更好地成为一名程序员,希望这样的例子可以帮助其他人在真实用例中学习类。

1 个答案:

答案 0 :(得分:5)

您可以尝试使用JSON.parse的{​​{3}}参数。这是一个简化的例子:

class Person {
  // Destructure the JSON object into the parameters with defaults
  constructor ({name, title, school=[]}) {
    this.name = name
    this.title = title
    this.school = school
  }
}

var api = JSON.parse(a, function (k,v) {
  // Is this a new object being pushed into the top-level array?
  if (Array.isArray(this) && v.name) {
    return new Person(v)
  }
  return v
})

var group = api["people/administration"]