Ich bin ganz neu in scala.js Welt, damit ich es heraus auf einige kleine Beispiele versuchen entschieden und einer von ihnen ist ganz einfach get Anfrage mit Parsen von JSON zurück in scala Einheit zurückkehrt.upickle: ungültige Zeichenfolge-Wert während der Deserialisierung
Bitte Code finden, die unten abgebildet,:
def loadAndDisplayPosts(postsElement: Element) = {
jQuery.get(
url = "/posts",
success = {
(data: js.Any) =>
val stringify = JSON.stringify(data)
console.log(stringify)
val posts = read[List[Post]](stringify)
console.log(posts.size)
posts.map(render).foreach(postsElement.appendChild)
}
)
}
console.log (stringify) gibt die folgende json:
[
{
"title": "Some fancy title",
"content": "some very long string with \"escaped\" characters",
"tags": [
"algorithms"
],
"created": 1474606780004
}
]
Und wenn alles kommt auf die
read[List[Post]](stringify)
ich erhalte die folgende Ausnahme:
upickle.Invalid$Data: String (data: 1474606780004)
Die Frage ist also: ist alles da, dass ist falsch gemacht? Gibt es einen berechtigten Grund für ein solches Verhalten?
Version der Bibliothek verwendet:
"com.lihaoyi" %%% "upickle" % "0.4.1"
EDIT:
Unternehmen selbst hinzu:
case class Post(title: String,
content: String,
tags: List[String] = List.empty,
created: Long = System.currentTimeMillis())
EDIT 2:
Der folgende Code erzeugt den gleichen Fehler:
val post = Post("Some title", "some \"content\"", List("algorithms"), 1474606780004L)
val json = write[List[Post]](List(post))
Vielen Dank im Voraus für die Klarstellung.
Ich glaube upickle 'Long's als JSON-Strings serialisiert. Versuchen Sie, 'write' auf der manuell instanziierten Liste von Posts aufzurufen und vergleichen Sie die Ausgabe mit Ihrer' stringify' Zeichenkette. –
Als Alternative: Kann man 'readJs' anstelle von' read' aufrufen, statt 'stringify'' data' übergeben? –
Ändern Rückruf Signatur zu Daten: Js.Value und readJs Methode führt diese Ausnahme Aufruf: scala.scalajs.runtime.UndefinedBehaviorError: Ein undefiniertes Verhalten festgestellt wurde: [object Object], [object Object], [object Object], [object Object ], [Objekt Objekt] ist keine Instanz von Uptickle.Js $ Value – tkachuko