Необходимо преобразовать строку в объект Json в Scala - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь преобразовать строку в JSON, используя спрей JSON.Но я очень новичок в scala и сталкиваюсь с проблемами при написании кода.Мой входной файл является строкой и может содержать больше элементов.

Пример ввода String

12 rob 133 millan 

Ожидаемый файл JSON ниже

[
  {
    "M": {
      "Score": {
        "N": "12"
      },
      "TopicID": {
        "S": "rob"
      }
    }
  },
  {
    "M": {
      "Score": {
        "N": "133"
      },
      "TopicID": {
        "S": "milan"
      }
    }
  }

Любое предложение по подходу кода будетпомочь также.Пожалуйста, предложите.

1 Ответ

5 голосов
/ 21 мая 2019

С уважением создания JSON:

Сначала необходимо определить класс дела:

case class SClass(S: string)
case class NClass(N: string)
case class MClass(Score: NClass, TopicID: SClass)

Тогда:

implicit val mclassFormat = jsonFormat2(MClass)
implicit val nclassFormat = jsonFormat(NClass)
implicit val sclassFormat = jsonFormat(SClass)

// serialize the json (hardcoded values)
val mClass = MClass(NClass(12.toString(), SClass("rob"))
val mClassJsonString = mClass.toJson.prettyPrint

О разборе вашего ввода:

 val input = "12 rob 13 bla"

 val a = input.split(" ").zipWithIndex.collect{case(v,i) if (i % 2 == 0) => 
 (v,i)}.map(_._1)
 val b = input.split(" ").zipWithIndex.collect{case(v,i) if (i % 2 != 0) => 
 (v,i)}.map(_._1)
 val result = a.zip(b) // [(12,rob),(13,bla)]

теперь вы можете просмотреть свой результат следующим образом:

 result.foreach{case (x,y) => 
      val mClass = MClass(NClass(x.toString(), SClass(y))
      val mClassJsonString = mClass.toJson.prettyPrint
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...