【问题标题】:Parse JSON in Scala using JSON4S使用 JSON4S 在 Scala 中解析 JSON
【发布时间】:2017-02-17 09:21:49
【问题描述】:

我有一些 JSON 格式的响应数据:

{ "items" : 
    [
    {"commentId" : "28444760","userId" : "142607","userIP" : "","userName" : "Rock'n'Roll ","userAvatar" : "/i/default_userpic.png ","userIsBlock" : false,"userBanDate" : "",
    "userCountry" : "http://ikor.ill.in.ua/f/UA.gif","date" : "16.02.2017, 17:07","text" : "txt","rate" : 2,"isLikeExist" : false,"childComments" : []}
    ]
}

我想将其解析为列表。 例如,要提取commentId,我使用:

val js = parse(json)\\"items"
val commentId:List[String] = js\\"commentId"\ classOf[JString]

我得到带有 id 的列表

当我尝试解析 date 时,我得到了:

List(16.02.2017, 17:24, 16.02.2017, 17:23)

如何以 List("date time") 格式返回日期列表?

【问题讨论】:

    标签: json scala


    【解决方案1】:

    这是您可以使用格式规范解析日期/时间的方法:

    def parseDT(s: String) = {
     val fmt = "dd.MM.yyyy, HH:mm"
     val df = java.time.format.DateTimeFormatter.ofPattern(fmt)
     java.time.LocalDateTime.parse(s, df)
    }
    

    因此,在您从 JSON(作为字符串)获取日期后,解析它们: val dates = datesFromJSON.map(parse(_))

    如果您只想从日期字符串中删除逗号,您可以这样做 val dates = datesFromJSON.map(s => s.replaceAll(",",""))

    【讨论】:

    • 是的,但我需要将日期作为字符串。现在,我可以得到几个日期作为列表(日期,时间,日期,时间)
    • 对于解析日期我使用 val dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM") dateFormat.parse(date)
    • SimpleDateFormat 来自旧版 Java 类。使用来自java.time.format的新类
    【解决方案2】:

    我的解决方案是:

    val dateFormat  = new SimpleDateFormat("dd.MM.yyyy, HH:MM")
    val date:List[java.util.Date] = (js\\"date").children.map(x=>dateFormat.parse(x.values.toString))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多