首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Json内部的数组中提取一个json

从Json内部的数组中提取一个json
EN

Stack Overflow用户
提问于 2018-07-05 10:53:38
回答 1查看 394关注 0票数 2

我有一个复杂的JSON列,其结构是:

故事{卡片:[{故事-元素:{.}{…}{}

故事元素的长度是可变的。我需要从故事元素数组中提取一个特定的JSON块。为此,我首先需要提取故事元素。

下面是我尝试过的代码,但是它出现了错误:

代码语言:javascript
复制
import org.json4s.{DefaultFormats, MappingException}
import org.json4s.jackson.JsonMethods._
import org.apache.spark.sql.functions._

def getJsonContent(jsonstring: String): (String) = {
implicit val formats = DefaultFormats
val parsedJson = parse(jsonstring)
val value1 = (parsedJson\"cards"\"story-elements").extract[String]
value1
}
val getJsonContentUDF = udf((jsonstring: String) => 
getJsonContent(jsonstring))

input.withColumn("cards",getJsonContentUDF(input("storyDataFrame")))
EN

回答 1

Stack Overflow用户

发布于 2018-07-05 21:50:39

根据您提供的json,story-elements是一个json对象数组,但是您试图将数组提取为字符串((parsedJson\"cards"\"story-elements").extract[String])。

您可以创建表示故事的案例类(比如case class Story(description: String, pageUrl: String, ...)),然后用extract[List[Story]]extract[Array[Story]]代替extract[String],如果您只需要从故事中提取一段数据(例如描述),那么您可以使用类似xpath的语法来获取它,然后提取List[String]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51189507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档