首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scala中解析JSON最直接的方法是什么?

在Scala中解析JSON最直接的方法是什么?
EN

Stack Overflow用户
提问于 2010-11-13 05:24:30
回答 1查看 8.4K关注 0票数 17

我正在使用Scala开发一个简单的web应用程序。我们的计划是从外部API获取JSON数据,并将其插入到模板中(遗憾的是,不能以XML格式获取数据)。

我尝试过使用Twitter的scala-json库,但我无法正确编译它( github上的代码无法在sbt中更新,说明标准项目7.10不可用,我还没有解决这个问题)。

lift-json看起来令人印象深刻,但似乎比我现在需要的要复杂得多。

尝试导入我在Java中使用过的库jsonic时,会出现各种难以理解的错误。这太糟糕了,因为我更喜欢jsonic的直截了当。

我在使用内置的scala.util.parsing.json.JSON方面取得了一些进展,但实际上我不知道如何访问元素。正如您可能已经注意到的,我对Scala有些陌生。如何访问JSONObjects的属性?

scala.util.parsing.json.JSON有很多信息,但是有没有关于如何在任何地方使用它的简单教程呢?

我现在只对JSON的反序列化感兴趣,比如Ints、String、Map和List。目前,我不需要序列化对象或使反序列化的对象适合类。

有没有人能告诉我如何使用上面提到的库,或者帮我设置一个能做我想做的事情的Java库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-13 05:41:37

Lift JSON提供了几种不同风格的反序列化JSON。每种方法都有其优点和缺点。

代码语言:javascript
复制
val json = JsonParser.parse(""" { "foo": { "bar": 10 }} """)

LINQ风格查询理解:

代码语言:javascript
复制
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

使用案例类提取值

代码语言:javascript
复制
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 style

代码语言:javascript
复制
scala> val JInt(x) = json \ "foo" \ "bar"

x: BigInt = 10

非类型安全值

代码语言:javascript
复制
scala> json.values

res0: Map((foo,Map(bar -> 10)))
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4169153

复制
相关文章

相似问题

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