首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用js.Dynamic将case类序列化/反序列化为uPickle

如何使用js.Dynamic将case类序列化/反序列化为uPickle
EN

Stack Overflow用户
提问于 2015-10-16 22:18:05
回答 2查看 1K关注 0票数 5

我使用uPickle/ScalaJS使用以下代码片段将js.Dynamic对象反序列化为case类:

代码语言:javascript
复制
read[myClass](JSON.stringify(dynObj))

其中myClass是case类,dynObj是js.Dynamic对象。

是否有一种无样板和简单的方法来做到这一点?

为了序列化一个case类,我已经能够使用这个示例作为起点,使用无形状的方法将其序列化为js.Dynamic:

Converting nested case classes to nested Maps using Shapeless

我希望能够使用uPickle来代替。怎样才能用uPickle完成往返旅行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-18 07:32:30

代码语言:javascript
复制
upickle.default.readJs[myClass](upickle.json.readJs(dynObj))

应该这么做。如果你发现自己经常这样做的话,你可以把它包在一个好帮手身上。

存在类似的调用来将东西写到js.Dynamic,正好相反

代码语言:javascript
复制
 upickle.json.writeJs(upickle.default.writeJs[myClass](myClassInstance))

虽然您可能会在这里省略类型参数,因为它将被推断

票数 6
EN

Stack Overflow用户

发布于 2018-05-09 00:40:04

上面的答案不再适用于较新版本的upickle。在版本0.6.5中,我必须使用以下方法来反序列化动态对象:

代码语言:javascript
复制
val someJsObject: js.Dynamic = ...
upickle.WebJson.transform(someJsObject, implicitly[upickle.default.Reader[TargetType]])

要序列化,您可能需要如下所示:

代码语言:javascript
复制
val sourceObject: SourceType = ...
implicitly[upickle.default.Writer[SourceType]].write(upickle.WebJson.Builder, sourceObject)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33180377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档