Come si crea un oggetto Json con valori di tipi diversi?Come si crea un oggetto Json con valori di tipi diversi?
sto usando spray-JSON
Ecco il codice
val images : List[JsObject] = fetchImageUrls(url).map((url: String) => {
JsObject(List(
"link_path" -> JsString(url),
"display_name" -> JsString("image"),
"size" -> JsString(""),
"modified" -> JsString(""),
"thumbnail" -> JsString(url),
"filename" -> JsString("image"),
"is_dir" -> JsBoolean(x = false),
"thumb_exists" -> JsBoolean(x = true)))
})
val jsonAst: JsObject = JsObject(List(
"client" -> JsString("urlimages"),
"view" -> JsString("thumbnails"),
"contents" -> JsArray(images)
))
Funziona ma sembra davvero pesante. C'è un modo per definire JSON con codice come questo?
val images : List[List[(String, Any)]] = fetchImageUrls(url).map((url: String) => {
List(
"link_path" -> url,
"display_name" -> "image",
"size" -> "",
"modified" -> "",
"thumbnail" -> url,
"filename" -> "image",
"is_dir" -> false,
"thumb_exists" -> true)
})
val jsonAst = List(
"client" -> "urlimages",
"view" -> "thumbnails",
"contents" -> images
).toJson
Non funziona dire che
Cannot find JsonWriter or JsonFormat type class for List[(String, Object)]
).toJson
^
che ottengo, il tipo di ciascun campo non è definito in fase di compilazione. Ma perché non dovrebbe funzionare se il serializzatore esegue comunque lo schema di corrispondenza?
Grazie!
La libreria potrebbe supportare questo. Ma se no, ha una funzione 'implicita' che prende un' String' e lo converte in 'JsString' – Jatin