Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在使用Scala Play进行写操作时遇到问题_Json_Scala_Playframework_Playframework 2.1_Jsonserializer - Fatal编程技术网

Json 在使用Scala Play进行写操作时遇到问题

Json 在使用Scala Play进行写操作时遇到问题,json,scala,playframework,playframework-2.1,jsonserializer,Json,Scala,Playframework,Playframework 2.1,Jsonserializer,首先,我想对这篇长文章说声抱歉,我真的很感谢那些仍然关注我问题的人 我有一个控制器,它应该返回一个json响应,其结构如下: { result: [ { key: value, key: value, key: value, key: [ { key: value, key: value,

首先,我想对这篇长文章说声抱歉,我真的很感谢那些仍然关注我问题的人

我有一个控制器,它应该返回一个json响应,其结构如下:

{
   result: [
       {
           key: value,
           key: value,
           key: value,
           key: [
              {
                 key: value,
                 key: value,
                 key: value
              },...
           ]
       },....
   ]
}
然而,我有问题,让写入工作,因为我想

注意。我将在有问题的行下添加注释

object APIController extends Controller {

  def feed() = Action {
    val objects = repo.getObjects().toList
    Ok(Json.toJson(Json.obj("result" -> Class_1.apply(objects).result)))
  }
首先,如果我没有创建一个
Json.obj(“result”->List[objects])
Json结果中不会显示结果键。如果我为此添加了一个Writer,我会得到一个错误,即列表[对象]必须有一个Writer。但是如果我像上面那样写,列表[对象]就不需要编写器

*
“items”->o.listOfStuff
说它需要一个
写入
列表[列表中的类型]
,但是我有一个写入列表中的对象(类_3)的操作,我不需要一个
写入
,因为当从类_2序列化对象列表时,它的行为为何是这样的*

  case class Class_3 (id: Long, text: String)
  object Class_3 {
    def apply(obj: Object) = {
      new Class_3(obj.id, obj.funnyText)
    }
  }
  implicit val class3Writer = new Writes[Class_3] {
    override def writes(o: Class_3): JsValue = {
      Json.obj(
        "id" -> o.id,
        "text" -> o.text
      )
    }
   }
}
我从这段代码中得到的错误是:

No Json deserializer found for type Seq[Class_3]. Try to implement an implicit Writes or Format for this type.
[error]         "items" -> o.listOfStuff
[error]                             ^
如果我在写操作中删除这一行,它将编译并工作。 我认为这很奇怪,因为我序列化的第一个列表没有编写器,只针对列表中的对象

有人知道它为什么会这样吗? 我该怎么做才能完成我的目标?(我希望你明白我在做什么)

提前谢谢

只需将
隐式val class3Writer
放在
class2Writes


可能会将
隐式val class3Writer
放在
class2Writes
之前?哦,天哪。。这实际上解决了我的问题。非常感谢!然后我会回答
  case class Class_3 (id: Long, text: String)
  object Class_3 {
    def apply(obj: Object) = {
      new Class_3(obj.id, obj.funnyText)
    }
  }
  implicit val class3Writer = new Writes[Class_3] {
    override def writes(o: Class_3): JsValue = {
      Json.obj(
        "id" -> o.id,
        "text" -> o.text
      )
    }
   }
}
No Json deserializer found for type Seq[Class_3]. Try to implement an implicit Writes or Format for this type.
[error]         "items" -> o.listOfStuff
[error]                             ^