2016-04-27 6 views
0

Von ScalaJS.

import upickle.default._ 
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue 

case class Post(userId: Long, id: Long, title: String, body: String) 

@JSExport 
def posts() : Future[Seq[Post]] = { 
    val txt = """[{ 
    "userId": 1, 
    "id": 1, 
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", 
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" 
    }]""" 

    val p = read[Seq[Post]](txt) 

    println(p) 

    p 

} 

pp onFailure { 
    case x => println(x) 
} 

println (x) druckt: upickle.Invalid $ Data: String (Daten: 1)

Wie es funktioniert?

aktualisiert/Synchronisierung mit. https://github.com/lihaoyi/upickle-pprint/issues/154

+0

eingeben, um sicher zu sein, ohne es in Aktion zu sehen. Haben Sie versucht, ein Println vor 'Posts foreach' zu setzen? Bist du sicher, dass "Beiträge" nicht leer sind? –

+0

Lassen Sie uns die Daten sehen! Öffnen Sie Ihre Browser-Tools –

+0

keine Notwendigkeit. Ich habe alles hier hingelegt. Siehe aktualisierte Frage. – ses

Antwort

1

Hm ..

„uPickle serialisiert Longs als "1", um Korruption/Abschneiden für große Zahlen in Scala.js zu vermeiden, wenn sie kommen als unten als JSON Zahlen, müssen Sie sie als Ints oder Doubles "

+0

Woher kommt eigentlich dieses Zitat? Ich renne gerade in das gleiche Problem, will nur die Quelle dieser Info wissen :) – tkachuko