Используя библиотеку jackson Я читаю данные json из файла (каждая строка файла является объектом JSON) и анализирую их для объекта карты String и Any . Моя цель - сохранить указанные ключи (идентификатор и текст) в коллекцию.
val input = scala.io.Source.fromFile("data.json").getLines()
val mapper = new ObjectMapper() with DefaultScalaModule
val data_collection = mutable.HashMap.empty[Int, String]
for (i <- input){
val parsedJson = mapper.readValue[Map[String, Any]](i)
data_collection.put(
parsedJson.get("id"),
parsedJson.get("text")
)
Но поскольку значения на карте parsedJson имеют тип Любой , получая некоторые ключи, такие как id и text , возвращается Некоторые (значение) не только значение с соответствующим типом. Я ожидаю, что значения для ключа id будут целочисленными, а значения для text будут строковыми.
Запустив код я получил ошибку:
Error:(31, 23) type mismatch;
found : Option[Any]
required: Int
parsedJson.get("id"),
Вот пример данных JSON в файле:
{"text": "Hello How are you", "id": 1}
Возможно ли в Scala анализировать значения идентификатора в Int и текстовые значения в String или, по крайней мере, преобразовывать Some (значение) в значение с типом Int или String?