Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!
moultingyaml: Scala wrapper for SnakeYAML
Comment¶
If the input YAML doc has multiple formats,
you can first load it as an Object
and then use Object.isInstanceOf to check its type
and use Object.asInstanceOf[SomeType] to cast it to the right type.
%%classpath add mvn
org.yaml snakeyaml 1.25Loading...
Loading...
import scala.collection.JavaConverters._import scala.collection.JavaConverters._
import org.yaml.snakeyaml.Yamlimport org.yaml.snakeyaml.Yaml
import scala.collection.JavaConverters._import scala.collection.JavaConverters._
val yaml = new Yaml()Yaml:1842984473val document = "\n- Hesperiidae\n- Papilionidae\n- Apatelodidae\n- Epiplemidae"
- Hesperiidae
- Papilionidae
- Apatelodidae
- Epiplemidaeval obj = yaml.load(document).asInstanceOf[java.lang.Object][Hesperiidae, Papilionidae, Apatelodidae, Epiplemidae]obj.isInstanceOf[java.util.List[String]]trueobj.isInstanceOf[Seq[String]]falseobj.asInstanceOf[java.util.List[String]][Hesperiidae, Papilionidae, Apatelodidae, Epiplemidae]obj.asInstanceOf[java.util.List[String]][Hesperiidae, Papilionidae, Apatelodidae, Epiplemidae]obj.asInstanceOf[Seq[String]]java.lang.ClassCastException: java.util.ArrayList cannot be cast to scala.collection.Seq
... 48 elidedval list = yaml.load(document).asInstanceOf[java.util.List[String]][Hesperiidae, Papilionidae, Apatelodidae, Epiplemidae]list[Hesperiidae, Papilionidae, Apatelodidae, Epiplemidae]val doc = """
|aa:
| - x
| - y
|bb: z
""".stripMargin
aa:
- x
- y
bb: z
yaml.load(doc).asInstanceOf[java.util.Map[String, Any]]Loading...
Read YAML From a File¶
The following way of reading from a file is problematic ...
import java.io.{File, FileInputStream}
import org.yaml.snakeyaml.Yaml
val inputStream = new FileInputStream(new File("test.yaml"))
val yaml = new Yaml()Yaml:923704732yaml.load(inputStream).asInstanceOf[java.util.Map[String, Any]]Loading...
Cast to Map¶
104.62 / 813.0775