2015-04-01 72 views
1

Gatling 2.0。从服务器I'receiving活动的以下JSON:Gatling - 将json响应转换为案例类别列表

[ 
    { "a":"a","b":"b","c":"c","d":"d"}, 
    { "a":"a1","b":"b1","c":"c1","d":"d2" }, 
    { "a":"a2","b":"b2","c":"c2","d":"d3" } 
] 

现在我想将其存储在会话事件类的列表

case class Event(a:String:b:String,d:String) 

我尝试做以下

jsonPath("$.chats.chat[0].events.event").ofType[Seq[Any]].transform(_.map{ l => 

       Some(Event(l(0).asInstanceOf[String], l(1).asInstanceOf[String],l(3).asInstanceOf[String])).saveAs("events") 

但是这行不能编译: 请大家帮忙。

  • 后我想从会话获取该列表,我可以通过做到这一点:

    VAL事件=会话( “事件”)为[SEQ [活动]]

  • 谢谢。

    +0

    你为什么要在选项中包装你的事件? – 2015-04-01 18:27:01

    +0

    @ PierreDAL-PRA。 IIRC,这是2.0中的签名。它在2.1中改变了。 – 2015-04-01 19:21:46

    +0

    @ PierreDAL-PRA我的不好,在发布2.0之前它已经改变了:) – 2015-04-01 19:24:07

    回答

    2

    您正在使用transform,它将提取结果转换为其他内容。

    在这里,因为您没有指定检查顺序,所以使用默认的find,这只能得到提取步骤的第一个结果。我怀疑$.chats.chat[0].events.event是你想要的,它可能会返回一个Map(一个javascript对象)。你可能想要$.chats.chat[0].events

    然后关于,存储和访问数据到Session中,如果你不习惯Scala,你不应该尝试将它们存储在类中。

    取而代之的是,升级到具有改进EL功能的Gatling 2.1,以便您可以编写诸如${event.foo.bar}(您无法使用Gatling 2.0)的内容。