I am new to Scala. I have a JSON file, entitled scala_input.json
containing two items:
{
"edges_file": "/path/edges.json.gz",
"seed_file": "/path/seed.json.gz"
}
I wish to open the file, parse and attribute two val
from this file. I have tried:
val input_file = "/path/scala_input.json"
val json_data = JSON.parseFull(input_file)
val edges_file = json_data.get.asInstanceOf[Map[String, Any]]("edges_file").asInstanceOf[String]
val seeds_file = json_data.get.asInstanceOf[Map[String, Any]]("seed_file").asInstanceOf[String]]
However, this returns java.util.NoSuchElementException: None.get
. What is it I have not defined? json_data
and input_file
are correct and I am sure that edges_file
and seed_file
exist.
JSON.parseFull
expects a JSON String, not a path to a file containing such a String. So - you should first load the file and then parse it:
val input_file = "./scala_input.json"
val json_content = scala.io.Source.fromFile(input_file).mkString
val json_data = JSON.parseFull(json_content)
// go on from there...
os-lib and upickle are better options for reading and parsing JSON data.
val jsonString = os.read(os.pwd/"src"/"test"/"resources"/"scala_input.json")
val data = ujson.read(jsonString)
data("edges_file").str // "/path/edges.json.gz"
data("seed_file").str // "/path/seed.json.gz"
This code is way cleaner than what JSON.parseFull
allows for. See here for more details on how to use these libs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With