anchor.diff:  ```
   
   Instead we can use https://www.playframework.com/documentation/2.5.x/ScalaJsonCombinators[Play-Json extensions](requires play-json >= 2.4) 
  +
  +[source, scala]
   ```
   import ai.x.play.json.Jsonximplicit val jsonExampleFormat = Jsonx.formatCaseClass[JsonExample]
   
  
positive.code: 
  Since scala 2.11 we can have case class with more than 22 fields, so the following compiles.
  
  ```
  case class JsonExample (    a1:String, a2:String, a3:String, a4:String, a5:String, a6:String,    a7:String, a8:String, a9:String, a10:String, a11:String, a12:String,    a13:String, a14:String, a15:String, a16:String, a17:String, a18:String,    a19:String, a20:String, a21:String, a22:String, a23:String, a24:String)
  ```
  
  But if we try to use Play https://www.playframework.com/documentation/2.5.x/ScalaJsonAutomated[JSON automated mapping]
  ```
  import play.api.libs.json._implicit val jsonExampleFormat = Json.format[JsonExample]
  ```
  
negative.code: 
  A better solution is to organize these fields in “logical” embedded case classes.
  ```
  case class A (    a1:String, a2:String, a3:String, a4:String,    a5:String, a6:String, a7:String, a8:String)
  
  case class B (    a9:String, a10:String, a11:String, a12:String,    a13:String, a14:String, a15:String, a16:String  )case class C (    a17:String, a18:String, a19:String, a20:String,    a21:String, a22:String, a23:String, a24:String  )case class JsonExample2 (    a : A,    b : B,    c : C  )
  
  ```
  We use a “regular” play json format for the embedded case classes.
  ```
  import play.api.libs.json._implicit val jsonAFormat : Format[A] = Json.format[A]implicit val jsonBFormat : Format[B]= Json.format[B]implicit val jsonCFormat : Format[C] = Json.format[C]
  ```
  And the “trick” now is to use the JsPath https://www.playframework.com/documentation/2.5.x/ScalaJsonCombinators[Play Json Combinator] for the embedded case classes without any path.
  ```
  import play.api.libs.functional.syntax._implicit val jsonExample2Format: Format[JsonExample2]  = (  (JsPath).format[A] and  (JsPath).format[B] and  (JsPath).format[C])(JsonExample2.apply, unlift(JsonExample2.unapply))
  ```
  That’s all folks!
  
  