Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 类型安全文件上的迭代_Scala_Playframework 2.0_Typesafe - Fatal编程技术网

Scala 类型安全文件上的迭代

Scala 类型安全文件上的迭代,scala,playframework-2.0,typesafe,Scala,Playframework 2.0,Typesafe,我读过这个话题 并做了一些更改,但仍然不知道如何在play框架中迭代conf文件 Providers=[{1234 : "CProduct"}, {12345 : "ChProduct"}, {123 : "SProduct"}] 这是我的名为providers.Conf的Conf文件,问题是如何迭代它们并从中创建下拉框。如果可能的话,我想把它们作为映射,即[int,string] 我知道,我必须像这样对待他们 val config = ConfigFactory.load("provi

我读过这个话题

并做了一些更改,但仍然不知道如何在play框架中迭代conf文件

  Providers=[{1234 : "CProduct"},
{12345 : "ChProduct"},
{123 : "SProduct"}]
这是我的名为providers.Conf的Conf文件,问题是如何迭代它们并从中创建下拉框。如果可能的话,我想把它们作为映射,即[int,string]

我知道,我必须像这样对待他们

val config = ConfigFactory.load("providers.conf").getConfigList("Providers")
我可以像这样创建conf文件,但是,我应该从模板中获取它,以便这样做,我需要将它转换为hashmap或list或任何函数


干杯,

我不确定这是否是最有效的方法,但这是有效的:

1) 让我们获取配置文件:

val config = ConfigFactory.load().getConfigList("providers")
scala> config.getConfigList("providers")
res23: java.util.List[_ <: com.typesafe.config.Config] = [Config(SimpleConfigObject({"id":"1234","name":" Product2"})), Config(SimpleConfigObject({"id":"4523","name":"Product1"})), Config(SimpleConfigObject({"id":"432","name":" Product3"}))]
3) 现在,让我们将带有配置的列表转换为提供程序:

import scala.collection.JavaConversions._
providers.map(conf => Provider(conf.getString("id"), conf.getString("name"))).toList
res27: List[Provider] = List(Provider(1234, Product2), Provider(4523,Product1), Provider(432, Product3))

我们需要显式地将其转换为列表,因为默认情况下Java列表会转换为缓冲区。

我不确定这是否是最有效的方法,但这是有效的:

1) 让我们获取配置文件:

val config = ConfigFactory.load().getConfigList("providers")
scala> config.getConfigList("providers")
res23: java.util.List[_ <: com.typesafe.config.Config] = [Config(SimpleConfigObject({"id":"1234","name":" Product2"})), Config(SimpleConfigObject({"id":"4523","name":"Product1"})), Config(SimpleConfigObject({"id":"432","name":" Product3"}))]
3) 现在,让我们将带有配置的列表转换为提供程序:

import scala.collection.JavaConversions._
providers.map(conf => Provider(conf.getString("id"), conf.getString("name"))).toList
res27: List[Provider] = List(Provider(1234, Product2), Provider(4523,Product1), Provider(432, Product3))

我们需要显式地将它转换为列表,因为默认情况下Java列表会转换为缓冲区。

这是我的解决方案

   val config = ConfigFactory.load("providers.conf").getConfigList("Providers")

    var providerlist = new java.util.ArrayList[model.Provider]
    val providers = (0 until config.size())
    providers foreach {
      count => 
        val iterator = config.get(count).entrySet().iterator()

        while(iterator.hasNext()) {
          val entry = iterator.next()

          val p = new Provider(entry.getKey(), entry.getValue().render())
          providerlist.add(p);
        }
    }
    println(providerlist.get(0).providerId+providerlist.get(0).providerName)
    println(providerlist.get(33).providerId+providerlist.get(33).providerName)
还有我的课程

package model

case class Provider(providerId: String, providerName: String) 

这是我的解决方案

   val config = ConfigFactory.load("providers.conf").getConfigList("Providers")

    var providerlist = new java.util.ArrayList[model.Provider]
    val providers = (0 until config.size())
    providers foreach {
      count => 
        val iterator = config.get(count).entrySet().iterator()

        while(iterator.hasNext()) {
          val entry = iterator.next()

          val p = new Provider(entry.getKey(), entry.getValue().render())
          providerlist.add(p);
        }
    }
    println(providerlist.get(0).providerId+providerlist.get(0).providerName)
    println(providerlist.get(33).providerId+providerlist.get(33).providerName)
还有我的课程

package model

case class Provider(providerId: String, providerName: String) 

非常感谢您的回答,但是,有一个问题是,会有很多这样的提供者,我不想通过键入东西来获得它们,而是我想做一个循环。这是我的主要问题。@Ducaz035在
下你是什么意思?我不想通过键入stuff
来获取它们?好的,现在我理解了这个过程,但还有一个问题,我如何在这里定义providers.map?它将从哪里来?val config=ConfigFactory.load(“providers.conf”).getConfigList(“providers”)case-class-Provider(id:String,name:String)到这里一切正常,现在我必须立即访问toList。但是找不到提供者。在这里映射你的意思是什么?@Ducaz035阅读本文非常感谢你的回答,但是,有一个问题,会有很多这样的提供者,我不想通过键入内容来获取它们,我想做一个循环。这是我的主要问题。@Ducaz035在
下你是什么意思?我不想通过键入stuff
来获取它们?好的,现在我理解了这个过程,但还有一个问题,我如何在这里定义providers.map?它将从哪里来?val config=ConfigFactory.load(“providers.conf”).getConfigList(“providers”)case-class-Provider(id:String,name:String)到这里一切正常,现在我必须立即访问toList。但是找不到提供者。在这里映射你的意思是什么?@Ducaz035阅读本文问题已被编辑,因为感谢@AlexLv,我取得了一些进展。问题已被编辑,因为感谢@AlexLv,我取得了一些进展。