使用JSON4S在Scala中解析JSON

时间:2017-02-16 21:01:53

标签: json scala

我有一些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)

如何以列表格式返回日期列表("日期时间")?

2 个答案:

答案 0 :(得分:0)

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

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(",",""))

答案 1 :(得分:0)

我的解决方案是:

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))