我只有幾小時的時間去探索Play Framework (2.5.1)
,我很困惑,爲什麼當你已經定義Reads
和Writes
時,你會創建一個Format
。通過爲你的類定義Reads
和Writes
,你還沒有定義將類與JsValue
進行轉換所需的所有功能嗎?如果您有讀取[T]和寫入[T],Format [T]的目的是什麼?
2
A
回答
8
作爲播放框架文檔here
格式[T]中提到的僅僅是一個混合的讀取和寫入的特性和可以代替其部件一起使用 爲隱式轉換。
格式是Reads [T]和Writes [T]的組合。因此,您可以爲T類型定義單個隱式Format [T],並使用它來讀取和寫入Json,而不是爲T類型定義單獨的隱式Reads [T]和Writes [T]。因此,如果您已經具有Reads [T]併爲您的類型T寫入[T],然後格式[T]不是必需的,反之亦然。
Format的一個優點是你可以爲你的類型T定義一個單獨的Implicit Format [T],而不是定義兩個獨立的Reads [T]和Writes [T],如果它們都是對稱的(即讀和寫) 。因此,格式使您的JSON結構定義更少重複。例如,你可以做這樣的事情
implicit val formater: Format[Data] = (
(__ \ "id").format[Int] and
(__ \ "name").format[String] and
(__ \ "value").format[String]
) (Data.apply, unlift(Data.unapply))
而不是這個。
implicit val dataWriter: Writes[Data] = (
(__ \ "id").write[Int] and
(__ \ "name").write[String] and
(__ \ "file_type").write[String]
) (Data.apply)
implicit val dataWriter: Reads[Data] = (
(__ \ "id").read[Int] and
(__ \ "name").read[String] and
(__ \ "file_type").read[String]
) (unlift(Data.unapply))
相關問題
- 1. 什麼是HttpCallback <T>中的目的和什麼是T?
- 2. (* T)(nil)和&T {}/new(T)之間的區別是什麼? Golang
- 3. T&和T * const有什麼區別?
- 4. 如何從沒有/ n/t/t的xml文件中讀取myValue \ n \ t \ t
- 5. I18n:使用't(:test_key)','t('test_key')'和't('。test_key')'有什麼區別?
- 6. 以下C代碼的輸出是T T,爲什麼不t?
- 7. 如何在Scala中讀取[T]和寫入[T]枚舉(播放框架2.1)
- 8. 是什麼的printf( 「\%d」,&t);和printf( 「%d」,T)之間的差;
- 9. 什麼是e.getSource == t?
- 10. 什麼是BlockingCollection(共T)的目的
- 11. 爲什麼要使用const T&而不是const T或T&
- 12. 什麼是模板<typename T,T t> idiom?
- 13. 爲什麼庫包含Stream.of(T t)和Stream.of(T ...值)?
- 14. kernel/proc/kallsyms中的'T'和't'有什麼區別
- 15. 什麼是bash的$「\ T」
- 16. 什麼是Java的「T ...」?
- 17. YYYYMMDDTHHMMSS中的T是什麼?
- 18. T的類型是什麼?
- 19. 有什麼目的。 「::」 在T-SQL
- 20. IEqualityComparer <T>和IEquatable <T>和有什麼不一樣?
- 21. 傳遞給python3模塊的string.split()值解釋'|'像\ n \ t \ t \ t \ t。爲什麼?
- 22. 什麼爲T
- 23. 如何添加T和T
- 24. 創建讀[T]和寫[T]爲抽象類
- 25. char * t = new char和char * t = new char [10]有什麼不同?
- 26. HashSet <T>和List <T>有什麼區別?
- 27. `mut a:&T`和`a:&mut T`有什麼區別?
- 28. 刪除\ t \ t \ t從樣本\ t \ t
- 29. 差T獲取<T>(INT ID)和T獲取(INT ID)
- 30. 是否有'newtype T = MkT(T - > T)`的用例?
如果你回答你的問題可以接受答案嗎? –