Я пишу несколько тестовых примеров RESTful API, и у меня мало опыта работы с scala playframwork.
Вот пример моего JSON.
[ {
"size" : "5082",
"date-created" : "Wed Nov 19 17:10:39 CST 2014",
"id" : "546d236fb84e894eefd8f769",
"content-type" : "image/png",
"filename" : "chrome-on-windows.PNG"
}, {
"size" : "15684",
"date-created" : "Mon Jan 12 17:28:02 CST 2015",
"id" : "54b4588266b3d11b1c1e9db6",
"content-type" : "image/png",
"filename" : "logos_ncsa.png"
}, {
"size" : "1267871",
"date-created" : "Mon Jan 12 17:28:03 CST 2015",
"id" : "54b4588366b3d11b1c1e9dba",
"content-type" : "image/jpg",
"filename" : "morrowplots.jpg"
} ]
Как видите, у меня есть список / массив элементов JSON. Я хочу получить идентификатор файла morrowplots.jpg и сохранить его в переменной, которая будет использоваться для успешных вызовов API.
Итак, я установил свой код, чтобы он выглядел следующим образом. Переменная результата в приведенном ниже коде - это строка JSON, которую вы видите выше.
case class FileName(size: String, datecreated: String, id: String, contenttype: String, filename: String)
implicit val fileReads: Reads[FileName] = (
(__ \\ "size").read[String] and
(__ \\ "datecreated").read[String] and
(__ \\ "id").read[String] and
(__ \\ "content-type").read[String] and
(__ \\ "filename").read[String]
)(FileName.apply _)
val json: JsValue = Json.parse(contentAsString(result))
val nameResult: JsResult[FileName] = json.validate[FileName](fileReads)
info("Right after validate")
nameResult match {
case s: JsSuccess[FileName] => {
val testfile: FileName = s.get
// Do something with testfile
info("Success")
}
case e: JsError => {
info("Error")
info("Errors: " + JsError.toFlatJson(e).toString())
}
}
Это дает мне следующую ошибку.
[info] + Ошибки: {"obj size": [{"msg": "error.path.result.multiple", "args": []}], "obj filename": [ {"msg": "error.path.resul t.multiple", "args": []}], "obj id": [{"msg": "error.path.result.multiple", " args ": []}]," obj content-type ": [{" msg ":" error.path .result.multiple "," args ": []}]," obj * datecreated ": [{"msg": "error.path.missing", "args": []}]}
Итак, как мне исправить эту проблему со списком / массивом и как выполнить поиск по имени файла, чтобы получить идентификатор?
Заранее спасибо.