我使用uPickle/ScalaJS使用以下代码片段将js.Dynamic对象反序列化为case类:
read[myClass](JSON.stringify(dynObj))其中myClass是case类,dynObj是js.Dynamic对象。
是否有一种无样板和简单的方法来做到这一点?
为了序列化一个case类,我已经能够使用这个示例作为起点,使用无形状的方法将其序列化为js.Dynamic:
Converting nested case classes to nested Maps using Shapeless
我希望能够使用uPickle来代替。怎样才能用uPickle完成往返旅行?
发布于 2015-10-18 07:32:30
upickle.default.readJs[myClass](upickle.json.readJs(dynObj))应该这么做。如果你发现自己经常这样做的话,你可以把它包在一个好帮手身上。
存在类似的调用来将东西写到js.Dynamic,正好相反
upickle.json.writeJs(upickle.default.writeJs[myClass](myClassInstance))虽然您可能会在这里省略类型参数,因为它将被推断
发布于 2018-05-09 00:40:04
上面的答案不再适用于较新版本的upickle。在版本0.6.5中,我必须使用以下方法来反序列化动态对象:
val someJsObject: js.Dynamic = ...
upickle.WebJson.transform(someJsObject, implicitly[upickle.default.Reader[TargetType]])要序列化,您可能需要如下所示:
val sourceObject: SourceType = ...
implicitly[upickle.default.Writer[SourceType]].write(upickle.WebJson.Builder, sourceObject)https://stackoverflow.com/questions/33180377
复制相似问题