小编ulr*_*260的帖子

Play框架JSON读取:如何读取String或Int?

rest api的JS客户端可以将int和string作为某个字段的值发送.

{
   field1: "123",
   field2: "456"
}

{
   field1: 123,
   field2: 456
}
Run Code Online (Sandbox Code Playgroud)

以下是应该转换json请求正文的case类的play动作:

  case class Dto(field1: Int, field2: Int)
  object Dto {
    implicit val reads = Json.reads[Dto]
  } 

  def create = Action.async(BodyParsers.parse.json) { implicit request =>
    request.body.validate[Dto].map {
      dto => someService.doStuff(dto).map(result => Ok(Json.toJson(result)))
    }.recoverTotal {
      e => jsErrorToBadRequest(e)
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果我发送带有int值的json值,它可以正常工作.但是如果field1或field2是字符串("123","456"),它就会失败,因为request.body.validate需要Int.

但问题是JS客户端从输入字段发送值,输入字段转换为字符串.

处理整数或字符串的最佳方法是什么?(所以这个动作应该在两种情况下都将json转换为dto)

json scala playframework playframework-2.2

7
推荐指数
2
解决办法
2022
查看次数

Elasticsearch模糊匹配:如何首先获得直接点击?

我正在使用Elasticsearch在数据库中搜索名称,并且希望它模糊以允许出现较小的拼写错误。根据我在此问题上找到的建议,我使用“匹配”和“模糊性”而不是“模糊性”,这似乎更加准确。这是我的查询:

{ "query": 
    { "match": 
        { "last_name": 
            { "query": "Beach", 
              "type": "phrase",
              "fuzziness": 2
            } 
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

但是,即使我使用last_name“ Beach”获得了很多结果(我知道至少有100个),但在查询返回的前10个匹配中,我也获得了last_name“ Beech”和“ Berch”的结果。有人可以帮助我先弄清楚确切的匹配方法吗?

fuzzy-search elasticsearch

4
推荐指数
1
解决办法
2088
查看次数