首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在scala的Json解析器中将String改为Int

如何在scala的Json解析器中将String改为Int
EN

Stack Overflow用户
提问于 2018-05-30 04:03:36
回答 1查看 826关注 0票数 2

我正在使用Play JsPath

代码语言:javascript
复制
val jsonrecord = "{\"id\":111,\"zip\":\"123\"}"

case class record(id: Int, name: Int)

def validZip(name:String) = name.matches("""^[0-9]*$""")

def jsonextraction(json: JsValue): record = {

    implicit val jsonread: Reads[record] = (
      (JsPath \ "id").read[Int] and
        (JsPath \ "zip").read[String](validZip)
      ) (record.apply _)
    val result = json.as[record]
    result 
}

如何将name字段字符串转换为Int json输入字段是zip is引号,如字符串"123“。

我尝试删除引号并将其设置为整数,

检查空值不应为空,如果为空,则尝试抛出异常,如错误记录

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 07:00:38

您可以像这样映射到一个整数:

代码语言:javascript
复制
(JsPath \ "zip").read[String].map(_.toInt)

下面是一个最小的工作示例:

代码语言:javascript
复制
import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.libs.json.Reads._

case class record(id: Int, name: Int)

object record {
  implicit val jsonread: Reads[record] = (
    (JsPath \ "id").read[Int] and
    (JsPath \ "zip").read[String](pattern("""^[0-9]*$""".r)).map(_.toInt)
  )(record.apply _)
}

object PlayJson extends App {
  val jsonrecord = """{ "id": 111, "zip": "123" }"""
  println(Json.parse(jsonrecord).as[record])
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50592131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档