You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala Spark项目中lift-json转换access_token报错求助

解决方案:lift-json 3.5.0 映射Sharepoint令牌响应报错问题

问题根源

报错核心是你试图将包含access_token字段的JSON对象(JObject)直接映射到String类型,lift-json 3.x版本对类型映射的校验比2.x更严格,不允许直接将JObject转为String。即使改成Option[String]也无效,因为本质错误是类型不匹配,而非字段是否可选。

修复步骤

1. 定义匹配响应结构的Case Class

Sharepoint返回的令牌响应是一个JSON对象,必须用对应的Case Class来接收,而非直接映射到String:

case class TokenResponse(access_token: String)

如果响应包含其他字段(如expires_in、token_type等),可一并加入Case Class。

2. 正确使用lift-json解析

引入必要的隐式格式,通过extract方法解析到定义好的Case Class:

import net.liftweb.json._

// 声明隐式格式(lift-json依赖此完成类型映射)
implicit val formats = DefaultFormats

// 假设jsonStr是Sharepoint返回的响应字符串
val jsonStr = """{"access_token": "eyJ0eXA..."}"""
val tokenResp = parse(jsonStr).extract[TokenResponse]
val accessToken = tokenResp.access_token // 提取目标令牌字符串

3. 排查潜在问题

  • 确认Sharepoint返回的JSON结构未变更:确保顶层是包含access_token字段的对象,而非数组或其他结构。
  • 检查依赖冲突:Spark 3.5.0可能自带Jackson等JSON库,需确保lift-json在依赖树中优先级正确,避免版本冲突。

内容的提问来源于stack exchange,提问作者user5463155

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:54:57