加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中解析JSON最简单的方法是什么?

发布时间:2020-12-16 09:33:11 所属栏目:安全 来源:网络整理
导读:我正在使用Scala开发一个简单的Web应用程序。该计划是从外部API获取JSON数据,并将其插入到模板中(不幸的是,以XML格式获取数据不是一个选项)。 我已经尝试使用Twitter的scala-json库,但是我无法正确编译(github中的代码无法在sbt中更新,说标准项目7.10不
我正在使用Scala开发一个简单的Web应用程序。该计划是从外部API获取JSON数据,并将其插入到模板中(不幸的是,以XML格式获取数据不是一个选项)。

我已经尝试使用Twitter的scala-json库,但是我无法正确编译(github中的代码无法在sbt中更新,说标准项目7.10不可用,我还没有使用)。

电梯json看起来令人印象深刻,但似乎比我现在需要更多的细节。

尝试导入我在Java中使用的库,jsonic,导致各种异常错误。这太糟糕了,因为我比较喜欢jsonic是多么简单。

我已经在内置的scala.util.parsing.json.JSON中取得了一些进展,但实际上我无法知道如何访问这些元素。我对Scala有些新鲜,你可能已经注意到了。如何访问JSONObjects的属性?

http://www.scala-lang.org/api/current/scala/util/parsing/json/JSON$.html有很多信息,但是有没有一个简单的教程如何使用这个任何地方?

我真的只对当前的JSON进行反序列化,对Ints,Strings,Maps和Lists感兴趣。我没有需要序列化对象或使反序列化的对象适合当前的类。

任何人都可以指出使用上述图书馆之一的方法,或者帮助我设置一个可以做我想要的Java的lib?

解决方法

提升JSON提供了几种不同样式的反序列化JSON。每个人都有自己的利弊。

val json = JsonParser.parse(""" { "foo": { "bar": 10 }} """)

LINQ样式查询理解:

scala> for { JField("bar",JInt(x)) <- json } yield x 

res0: List[BigInt] = List(10)

更多例子
http://github.com/lift/lift/blob/master/framework/lift-base/lift-json/src/test/scala/net/liftweb/json/QueryExamples.scala

使用案例类提取值

implicit val formats = net.liftweb.json.DefaultFormats 
case class Foo(foo: Bar) 
case class Bar(bar: Int) 
json.extract[Foo]

更多例子:https://github.com/lift/lift/blob/master/framework/lift-base/lift-json/src/test/scala/net/liftweb/json/ExtractionExamples.scala

XPath风格

scala> val JInt(x) = json  "foo"  "bar"

x: BigInt = 10

非类型安全值

scala> json.values

res0: Map((foo,Map(bar -> 10)))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读