反序列化和规范化之间有什么区别?

时间:2015-07-19 09:28:15

标签: ember.js ember-data

是“反序列化”和“规范化”同一件事还是存在差异?一个直截了当的问题。我相信这对前端模型与后端数据库源/ API的通信是通用的。但如果没有,这是在Ember Data的背景下。

1 个答案:

答案 0 :(得分:2)

存在差异。当你去除deseralize你的意图是改变从一种形式说javascript对象并将其转换为另一种形式说一个ember-data模型。当您规范化时,您的意图是操纵当前表单的数据和/或结构。

因此,对于ember-data,您RESTSerializer使用:

  • 序列化,它接受一个模型并将其转换为普通的javascript对象。
  • 规范化,它接受一个普通的javascript对象并返回一个普通的javascript对象。

transforms/date.js相比:

  • 反序列化给定数字或字符串返回Date对象。
  • 序列化返回Date对象的字符串表示形式。

将这两件事放在上下文中,来自JSONSerializer上applyTransforms方法的文档(这是转换在普通javascript对象上工作的地方):

  

给定一个DS.Model的子类和一个JSON对象,这个方法会      遍历DS.Model的每个属性并调用      关于匹配属性的DS.Transform#deserialize方法      JSON对象。通常在此方法之后调用此方法      序列化程序的normalize方法。