【发布时间】:2019-08-25 23:28:30
【问题描述】:
我有一个文本文件,其中包含类似的行
players={"Messi":{"Details":{"Goals":500},"Country":"Argentina"},"Neymar":{"Clubs":["Santos", " FC barcelona", "Paris saint German"], "Country":"Brazil"}}
现在我使用正则表达式来提取
{“梅西”:{“详情”:{“进球”:500},“国家”:“阿根廷”},“内马尔”:{“俱乐部”:[“桑托斯”,“巴塞罗那足球俱乐部” ", "巴黎圣德意志"],"国家":"巴西"}}
从文本文件中,并将其传递给一个案例类,该类接受该值作为 String。
我正在使用这个案例类制作一个数据框。
在我的情况下,每行的内容可能与 JSON 字符串中的内容不同。所以我正在寻找一种通用解决方案,将任何复杂的 Json 字符串转换为 Map 值。
检查 dataframe.printSchema 时,我将 player 列作为字符串类型。 但我需要它作为一个 Map 类型,它将 Key 和 value 作为 Struct 类型。 我尝试了此链接中提到的方法
How can I convert a json string to a scala map?
当我使用这种方式时,我得到了错误
"org.json4s.package$MappingException: 不知道如何转换 JObject(List((Details,JObject(List((Goals,JString(500))))), (Country,JString(Argentina) )))) 到类 java.lang.String "
我使用了以下解决方案
Converting JSON string to a JSON object in Scala
但是这些对我也不起作用。
这是我的案例课
case class caseClass (
Players :String = ""
)
我正在使用用户定义的函数提取 json 字符串。
我的要求是我有一个复杂的 Json 字符串,其中包含键和值作为结构、列表等。
所以我想将字符串转换为对应的 JSON,该 JSON 包含关于其内容的正确模式。
敬请期待有价值的解决方案。
【问题讨论】:
标签: java json scala apache-spark intellij-idea