2016-08-08 4 views
0

Это своего рода странная проблема, с которой я столкнулся. У меня был класс case со многими параметрами, включая строку, и он смог сериализовать его в JSON прямо с помощью Play's Format. Затем я добавил еще один параметр - строку - и он начинает жаловаться, чтоSerializing Case Class

Нет исключить его или unapplySeq функция не найдено

оригинальный выглядит следующим образом:

case class PushMessage(stageOne: Boolean, stageTwo: Boolean, stageThree: Boolean, stageFour: Boolean, stageFive: Boolean, 
        highestStage: Int, iOSTotal: Int, androidTotal: Int, iOSRunningCount: Int, androidRunningCount: Int, 
        vendorId: String, androidProblem: Boolean, iOSComplete: Boolean, androidComplete: Boolean, 
        totalStageThrees: Int, totalStageFours: Int, totalStageFives: Int, expectedTotals: Int, 
        latestUpdate: Long, iOSProblem: Boolean, startTime: Long, date: Long) 

Новый выглядит например

case class PushMessage(stageOne: Boolean, stageTwo: Boolean, stageThree: Boolean, stageFour: Boolean, stageFive: Boolean, 
        highestStage: Int, iOSTotal: Int, androidTotal: Int, iOSRunningCount: Int, androidRunningCount: Int, 
        vendorId: String, androidProblem: Boolean, iOSComplete: Boolean, androidComplete: Boolean, 
        totalStageThrees: Int, totalStageFours: Int, totalStageFives: Int, expectedTotals: Int, 
        latestUpdate: Long, iOSProblem: Boolean, startTime: Long, date: Long, topics: String) 

Единственное отличие - это параметр темы.

Мой сериализатору выглядит следующим образом:

object PushMessage { 

    implicit val pushMessageFormat = Json.format[PushMessage] 

} 

Любые и вся помощь будет оценена. Благодарю.

ответ

3

Play использует макросы и кортежи, чтобы получить экземпляр Json. Проблема в том, что кортежи ограничены 22 полями в Scala (по крайней мере, на данный момент).

Это означает, что Play не сможет автоматически выводить экземпляр Json, хотя вы можете обойти его, вручную его записывая.

Дополнительную информацию можно найти здесь: Play Framework Scala format large JSON (No unapply or unapplySeq function found)