本文介绍了案例类只有一个字段时如何将json转为案例类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 play 2.1 中读取用于将 Json 编组到对象.但是当案例类只有一个字段时,我怎么能做到这一点.适用于更多字段的成语不起作用,因为没有使用一个字段and".因此我没有得到 FunctionBuilder.

In play 2.1 reads are used to marshall Json to objects. But how can I do this when the case class has only one field. The ideom that works for more fields does not work, as with one field 'and' is not used. Thus I do not get a FunctionBuilder.

下面的代码给了我一个类型不匹配.我该如何解决这个问题?

The following code gives me a type mismatch. How can I fix this?

case class Data(stamm: Seq[String])


implicit val dataReads  = (
  (__  "stamm").read(Reads.list[String])
)(Data)

推荐答案

Json 组合器不适用于单字段案例类.

Json combinators doesn't work for single field case class.

Pascal(这个 API 的作者)在这里解释了这种情况https://groups.google.com/forum/?fromgroups=#!starred/游戏框架/hGrveOkbJ6U

Pascal (writer of this API) has explained this situation herehttps://groups.google.com/forum/?fromgroups=#!starred/play-framework/hGrveOkbJ6U

有一些可行的解决方法,例如:

There are some workarounds which works, like this one:

case class A(value: List[Int])
val areads = (__  'value).read[List[Int]].map{ l => A(l) } // covariant map

这篇关于案例类只有一个字段时如何将json转为案例类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 14:04