如何在Scala中解析json

时间:2018-07-01 11:19:54

标签: json scala spark-streaming

我有火花流作业,它通过json4s解析了kafka流记录json,但是有一种情况我不知道如何处理。每个json的每个处理后的地图都是这样的:

Map(new_userid -> 70048837, target_type -> category, deviceid -> 70f817d51b321217_afa3673c0804, click_url -> , platform -> android_app, page_section -> List(category_switch_bar), click_location -> )

看看page_section,这不是我所需要的,我想要的结果是:page_section -> "category_switch_bar",但是page_section是一个只有元素或无的列表。我编写此代码:

val pageSection=  record.getOrElse("page_section", "")

但是很显然这是不对的。我该如何收集?

1 个答案:

答案 0 :(得分:0)

根据您的json示例page_section确实是JSON列表,因此可以合理地反序列化为Scala List。 如果您确定它始终是一个或零个元素列表,并且愿意将其转换为案例类而不是Map,则可以使用自定义FieldSerializer,它将JArray转换为{{ 1}}或JString,以防万一类将成为JNull字段

有关更多详细信息,请参见json4s文档https://github.com/json4s/json4s#serializing-fields-of-a-class