json - 如何在 scala 中解析 json
问题描述
我有火花流作业,它通过 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 是一个只有一个元素或 None 的列表。我这样编码:
val pageSection= record.getOrElse("page_section", "")
但很明显这是不对的。我如何收集它?
解决方案
根据您的 json 示例page_section
确实是一个 JSON 列表,因此它被合理地反序列化为 Scala 列表。如果您确定它始终是一个或零个元素列表,并且您愿意将其转换为案例类而不是 Map,则可以使用 customFieldSerializer
将转换JArray
为或者JString
将成为一个字段JNull
的案例类Option[String]
有关更多详细信息,请参阅 json4s 文档https://github.com/json4s/json4s#serializing-fields-of-a-class
推荐阅读
- node.js - 未捕获的 AssertionError:预期 {} 等于“测试”
- javascript - 返回未定义的变量
- r - R:如何按单列聚合数据框列表,一次聚合所有列
- jquery - 想让内容出现在标签之间
- msbuild - msbuild 自定义目标的输出项
- xamarin.forms - .NET Standard lib 中的 PlatformEffect 没有得到解决
- javascript - 使用 Request 模块发送 POST 请求,但得到几乎空的数据数组
- java - 如何在 Couchbase 中捕获保存或更新事件
- servicestack - 自托管最大 URL 长度
- excel - VBA/Userform 中的偏移匹配函数