Может показаться, что вы пытаетесь проанализировать фактический словарь в формате psuedo json, который больше похож на пару значений ключа, заключенную в фигурные скобки.Если бы я собирался решить такую проблему, я бы использовал базовый разбор строк.Для правильной десериализации JSON JSON должен быть действительным, и вы должны иметь возможность представлять json как класс case.Текст на изображении не может быть представлен как класс case, потому что ни один из элементов не отображается более одного раза.
Вот рабочий пример того, как я мог бы решить эту проблему в Scala.
scala> val test = "{\"dog\":\"animal with four legs\",\"fish\":\"underwater animal\",\"horse\":\"tall running animal\"}"
//test: String = {"dog":"animal with four legs","fish":"underwater animal","horse":"tall running animal"}
scala> val test2 = test.replace("{","").replace("}","").replace("\"","")
//test2: String = dog:animal with four legs,fish:underwater animal,horse:tall running animal
scala> val test3 = test2.split(",")
//test3: Array[String] = Array(dog:animal with four legs, fish:underwater animal, horse:tall running animal)
scala> val test4 = test3.map(innerValue => innerValue.split(":"))
//test4: Array[Array[String]] = Array(Array(dog, animal with four legs), Array(fish, underwater animal), Array(horse, tall running animal))
scala> val test5 = test4.map( outerArray => outerArray(0) -> outerArray(1)).toMap
//test5: scala.collection.immutable.Map[String,String] = Map(dog -> animal with four legs, fish -> underwater animal, horse -> tall running animal)
scala> test5("dog")
//res1: String = animal with four legs
Шаги:
Тест: определить строку как переменную
Test2: удалить ненужный текст с помощью функции замены, связанной несколько раз
Test3: разбить строку на несколько массивов на основе запятых
Test4: выполнить итерацию по массиву и разбитьменьшие строки в:
Test5: перебирайте массив массивов и создавайте пары ключ-значение, а затем преобразуйте в карту.
Test5 теперь представляет собой представление карты scala для типа отображаемого документана рисунке, и вы можете получить доступ к значениям, основанным на ключах.
Хотя это будет работать, это будет медленно для большого документа, и было бы лучше представить его как правильно определенный документ JSON, который можно сериализовать и десериализоватьиспользуя стандартные методы.Правильно отформатированный документ json может выглядеть следующим образом.
{
"dictionary_entries": [
{
"term": "dog",
"description": "animal with four legs"
},
{
"term": "fish",
"description": "underwater animal"
},
{
"term": "horse",
"description": "tall running animal"
}
]
}