22 fields limit in Scala 2.11 + Play Framework 2.3 Case classes and functions

后端 未结 8 1538
盖世英雄少女心
盖世英雄少女心 2020-12-08 03:05

Scala 2.11 is out and the 22 fields limit for case classes seems to be fixed (Scala Issue, Release Notes).

This has been an issue for me for a while because I use ca

相关标签:
8条回答
  • It seems this handles it all nicely.

    +22 field case class formatter and more for play-json https://github.com/xdotai/play-json-extensions

    Supports Scala 2.11.x, 2.12.x, and 2.13.x and play 2.3, 2.4, 2.5 and 2.7

    And is referenced in the play-json issue as the preferred solution (but not yet merged)

    0 讨论(0)
  • 2020-12-08 03:28

    You can use Jackson's Scala module. Play's json feature is built upon Jackson scala . I don't know why they put a 22 field limit here while jackson supports more than 22 fields. It may make sense that a function call can never use more than 22 parameters, but we can have hundreds of columns inside a DB entity, so this restriction here is ridiculous and makes Play a less productive toy. check this out:

    import com.fasterxml.jackson.databind.ObjectMapper
    import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
    import com.fasterxml.jackson.module.scala.DefaultScalaModule
    
    object JacksonUtil extends App {
      val mapper = new ObjectMapper with ScalaObjectMapper
      mapper.registerModule(DefaultScalaModule)
    
    
      val t23 = T23("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w")
    
      println(mapper.writeValueAsString(t23))
     }
    case class T23(f1:String,f2:String,f3:String,f4:String,f5:String,f6:String,f7:String,
        f8:String,f9:String,f10:String,f11:String,f12:String,f13:String,f14:String,f15:String,
        f16:String,f17:String,f18:String,f19:String,f20:String,f21:String,f22:String,f23:String)
    
    0 讨论(0)
提交回复
热议问题