2015-12-24 2 views
2

У меня есть следующий Json как var dataObject ={"files": ["code.R", "data.cv", "input.txt"]}. Я отправляю этот json как тело с клиентской стороны, и я хочу разобрать Json и прочитать эти имена файлов на стороне сервера в игре scala.Как читать массив json в scala с использованием рамки воспроизведения

Пожалуйста, помогите

ответ

0

Это документация: https://www.playframework.com/documentation/2.5.x/ScalaJson

А решение очень простое:

import play.api.libs.json._ 

val json: JsValue = Json.parse("{ "files": ["code.R","data.csv","input.txt"] }") 

val files = (json \ "files").get 
+0

массив является динамическим это происходит от выбора флажка в результате я ДНТ знает имена файлов, прежде чем руки –

+0

Пожалуйста, покажите пример, как это сделать в этом типе случае –

+0

В этом случае вы нужен JsonBodyParser: https://www.playframework.com/documentation/2.5.x/JavaBodyParsers – znurgl

1

Поскольку у вас есть только одно поле, вы не можете использовать JSon комбинаторов, Но вы можете сделать следующее:

case class Selection(files:List[String]) 
object Selection{ 
    implicit val selectionReads = (__ \ 'files).read[List[String]].map{ l => Selection(l) } 
    implicit val selectionWrites = (__ \ 'files).write[List[String]].contramap { (selection: Selection) => selection.files} 

    //You can replace the above 2 lines with this line - depends on you. 
    implicit val selectionFormat: Format[Selection] = (__ \ 'files).format[List[String]].inmap(files => Selection(files), (selection: Selection) => selection.files) 
} 

Убедитесь, что вы импорт:

import play.api.libs.functional.syntax._ 
+0

как печатать выбранные имена файлов –

+0

Json.stringify (Json.toJson (Selection (List («x», «y», "z")))) @sanmoypaul – Tomer

+0

Эй, @Tomer, в первом слове вашего ответа есть немного ошибочного ответа. – dirceusemighini

Смежные вопросы