当前位置:  开发笔记 > 编程语言 > 正文

如何使用Play with Scala加载JSON文件

如何解决《如何使用PlaywithScala加载JSON文件》经验,为你挑选了2个好方法。

我需要JSON在我的一个控制器中加载一个带有城市列表的文件,以便之后将其传递给视图.

我把文件放在这里:( app/assets/jsons/countriesToCities.json
顺便说一下:这是一个合适的位置,还是应该把它放在其他地方?)

我已经阅读了文档,我可以看到可以JsValue从字符串创建一个:https://www.playframework.com/documentation/2.4.x/ScalaJson#Using-string-parsing

我想以JsValue类似的方式创造一个.不同之处在于我想从文件中加载内容,而不是从字符串中加载......遗憾的是,我还没有找到任何关于如何执行此操作的代码段.
我是否必须使用其他东西将文件读入字符串,然后才对该字符串使用parse方法?

我们将非常感谢代码片段以及如何在答案中执行此操作的示例!:)

非常感谢你提前!



1> Dylan..:

看起来关于可能重复的评论是如何从app/assets文件夹中读取文件.我的答案是关于如何从流中解析Json.结合这两个,你应该很高兴去.

Json.parse接受一些不同的参数类型,其中一个是InputStream.

val stream = new FileInputStream(file)
val json = try {  Json.parse(stream) } finally { stream.close() }

PS如果您无法在书面文档中找到所需内容,那么API文档就是一个很好的起点.


我应该注意,由于您使用的是Scala + Play,因此您实际上正在使用Scala + Java + Play.您仍然可以使用`java.io`而不会丢失Scala.

2> Henrique Fer..:

以下是我设法解决的方法:

val source: String = Source.fromFile("app/assets/jsons/countriesToCities.json").getLines.mkString
val json: JsValue = Json.parse(source)

谢谢您的帮助!:)


`Json.parse`可以直接从流中读取,因此最好使用`InputStream`版本而不是获取行,从中生成一个字符串,然后解析它.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有