代码之家  ›  专栏  ›  技术社区  ›  KOGI

有没有办法使用与JSON中不同的属性名称?

  •  4
  • KOGI  · 技术社区  · 12 年前

    我有以下JSON(简单示例):

    {
      id:        101,
      firstName: "John",
      surname:   "Doe"
    }
    

    但我想让我的模特使用 lastName 而不是 surname 。可能是这样的:

    App.Person = DS.Model.extend({
      firstName: DS.attr('string'),
      lastName:  DS.attr('string', { key: 'surname' })
    });
    

    我可以发誓,我在某个地方看到了一些展示如何做到这一点的东西,但就我而言,找不到它。我也没有在余烬数据源中发现任何明显的东西。

    我试过设置 key , name , id , alias map 在属性选项中,但似乎没有一个能起到作用。有办法做到这一点吗?

    1 回复  |  直到 12 年前
        1
  •  7
  •   Jonathan Lonowski    12 年前

    你应该能够做到这一点 The REST Adapter 文件中包括一个映射示例“ 不规则键 “在 Underscored Attribute Names :

    不规则键可以映射到适配器上。如果JSON的密钥为 lastNameOfPerson ,并且所需的属性名称只是 lastName ,通知适配器:

    App.Person = DS.Model.extend({
      lastName: DS.attr('string')
    });
    DS.RESTAdapter.map('App.Person', {
      lastName: { key: 'lastNameOfPerson' }
    });
    

    在您的情况下:

    DS.RESTAdapter.map('App.Person', {
        lastName: { key: 'surname' }
    });
    

    同样值得注意的是,Ember期望JSON具有 first_name 而模型具有 firstName 。所以,这可能也需要 改编 明确地