1

サンプル オブジェクトが含まれているサーバーからの次の Json 応答があります。

{  
   "op":{  
      "samples":{ 
          "name1" :[0,0,0,0,0,0,0],
          "name2" :[0,0,0,0,0,0,0],
          "name3" :[0,0,0,0,0,0,0],

            //About 100 more names

          "name99" :[1,2,3,4,5,6,7],
          "name100" :[0,0,0,0,0,0,0],

      },
      "samplesCount":60,
      "isPersistent":true,
      "lastTStamp":1415619627689,
      "interval":1000
   },
   "hot_keys":[  
      {  
         "name":"counter::F03E91E2A4B9C25F",
         "ops":0.11010372549516878
      }
        //About 40 objects
   ]
}

この結果の一部だけが必要です。

次のプロパティが必要です。

name1, name23, timeStamp and isPersistant  

そこで、次のケース クラスとその暗黙的なパーサーを作成しました。

 case class Samples(name1[Int],name23[Int])
  case class Op(samples:Samples,lastTStamp:String,isPersistent:Boolean)
  case class BucketStatisticResponse(op:Op)

  object BucketStatisticJsonProtocol extends DefaultJsonProtocol {
    implicit val samplesFormat = jsonFormat2(Samples)
    implicit val opFormat = jsonFormat3(Op)
    implicit val bucketStatisticFormat= jsonFormat1(BucketStatisticResponse)
  }

しかし、私は次のエラーが発生しています:

spray.httpx.PipelineException: MalformedContent(Expected String as JsString, but got 1069547520,Some(spray.json.DeserializationException: Expected String as JsString, but got 1069547520))

助けていただけますか?

4

1 に答える 1

2

エラー メッセージは、spray-json が文字列を予期していたが、それ以外の場合は sth を取得したことを示しています。次のように、Op クラスで "lastTStamp" を Long として定義する必要があるようです。

case class Op(samples:Samples, lastTStamp:Long, isPersistent:Boolean)
于 2014-11-10T16:16:50.893 に答える