我有系統需要將不同類型的對象序列化爲json和xml。其中一些是Lift MetaRecords,一些是案例類。我想使用類型類,並創建類似的東西:在Scala中設計序列化庫,類型爲
trait Serializable[T] {
serialize[T](obj: T): T
}
而通常的實現json,xml和打開的擴展。
問題我現在面對的是序列化本身。目前,有不同的對象序列化的上下文。想象一下新聞饋送系統。有三個對象:用戶,發佈(提要元素)和照片。這些對象有一些屬性,可以互相引用。現在,在相同的情況下,我想單獨序列化對象(用戶設置,首選項等),在其他情況下,我還需要其他對象進行序列化。 Feed:列出[發佈] +相關照片。爲了做到這一點,我需要提供引用的對象。
我目前的實現是臃腫的可選參數化函數。
def feedAsJson(post: MPost, grp: Option[PrivateGroup], commentsBox: Option[List[MPostComment]] = Empty): JObject
我想過實施某種上下文解決方案。用隱式上下文參數重載feedAsJson,它將提供必要的數據。我不知道我想如何實現它,因爲它可能與蛋糕模式觸及數據庫。任何建議非常讚賞。
我想補充兩個JSON和XML序列化,因此在可序列化特徵的通用功能。 – Lukasz
@Lukasz,那麼你可以在兩個單獨的對象或包下創建兩個串行器的並行層次結構,並執行'import serializable.Xml._'或'import Serializable.JSon._'來獲取蘊含。另一種方法是在Serializable中同時使用'serializeXML'和'serializeJson'方法。至少它似乎應該是'trait Serializable [To] {def serialize [From](from:From):To}'而不是在任何地方使用'T'。 – huynhjl