It seems you are using a similar structure for `"mappings" -> Seq[Mapping]` and `"properties" -> Seq[Mapping`. It might be a good idea to implement a writes for that:

    implicit def seqWrites = Writes[Seq[Mapping]](mappings => JsObject(mappings map jsonTuple))

Then you can simply rewrite the following:

    Json.obj("properties" -> Json.obj(mapping.properties.map{jsonTuple}:_*))
    // will become
    Json.obj("properties" -> mapping.properties)

    Json.obj("mappings" -> Json.obj(mappings.map{jsonTuple}:_*))
    // will become
    Json.obj("mappings" -> mappings)