我有火花流作业,它通过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", "")
但是很显然这是不对的。我该如何收集?
答案 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