You need to enable JavaScript to run this app. 如何将字符串形式的嵌套整数数组转换为Scala Spark的List/Seq
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串形式的嵌套整数数组转换为Scala Spark的List/Seq

解决方案

问题原因

你之前的代码仅完成了将字符串解析为circe Json抽象语法树的步骤,没有执行AST到Scala集合类型的解码操作,因此无法直接得到可用的List/Sequence。

场景1:纯Scala环境使用circe解析

可以直接通过circe的类型解码能力一步完成转换,不需要手动遍历Json结构:

// 导入必要依赖
import io.circe._
import io.circe.parser._

val jsonString = "[[1,2,100], [1, 2, 111]]"

// 直接解码为嵌套List[List[Int]]类型
val parseResult = parse(jsonString).flatMap(_.as[List[List[Int]]])

// 安全获取结果,解析失败时返回空列表,可按需调整异常处理逻辑
val targetList = parseResult.getOrElse(List.empty[List[Int]])

println(targetList) // 输出:List(List(1, 2, 100), List(1, 2, 111))

场景2:Spark环境下解析

如果是在Spark作业中处理这类字符串字段,优先使用Spark内置的JSON解析能力,无需引入第三方依赖:

import org.apache.spark.sql.functions.from_json
import org.apache.spark.sql.types.{ArrayType, IntegerType}

// 定义和数据结构匹配的Schema:两层嵌套数组,元素为整型
val nestedArraySchema = ArrayType(ArrayType(IntegerType))

// 假设待处理字段名为json_str,解析后生成新字段parsed_seq
val processedDf = originalDf.withColumn("parsed_seq", from_json($"json_str", nestedArraySchema))

解析后的parsed_seq字段类型为Array[Array[Int]],对应Scala的Seq[Seq[Int]],可直接用于后续Spark算子计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:03:03