scalaplay-json

How to convert List[String] to List[Object] in Scala


I need to change from one List[String] to List[MyObject] in scala.

For example,JSON input is like below

employee: {
  name: "test",
  employeeBranch: ["CSE", "IT", "ECE"]
}

Output should be like this,

Employee: {
  Name: "test",
  EmployeeBranch:[{"branch": "CSE"}, {"branch": "IT"}, {"branch": "ECE"}]
}

Input case class:

Class Office(
name: Option[String],
employeeBranch: Option[List[String]])

Output case class:

Class Output(
Name: Option[String],
EmployeeBranch: Option[List[Branch]])

case class Branch(
branch: Option[String])

This is the requirement.


Solution

  • It is hard to answer without knowing details of the particular JSON library, but an Object is probably represented as a Map. So to convert a List[String] to a List[Map[String, String]] you can do this:

    val list = List("CSE", "IT", "ECE")
    val map = list.map(x => Map("branch" -> x))
    

    This gives

    List(Map(branch -> CSE), Map(branch -> IT), Map(branch -> ECE))
    

    which should convert to the JSON you want.