2

Json オブジェクトを別の Json オブジェクトに再フォーマットする次のコードがあります。

 val newJson = Json.toJson(retJson.fields.flatMap {
      case (epoch, obj) => obj.as[JsObject].fields.map(epoch -> _)
    }.groupBy(_._2._1)
    .mapValues(
      _.map {
        case (epoch, (k, v)) => {
          var epochDate = epoch.substring(0, 13).toLong
          epochDate = convertEpoch(epochDate, timezoneOffset)
          Seq[Double](epochDate, sensorCalculations(whatevers, Option(v.as[String])))
        }
      }))

これはうまく機能しますが、値が -1 の場合、この要素を無視して結果に含めないという新しい要件があります。これを適切に行う方法がわかりません。

- - 編集 - -

一致エラーを引き起こす次のことを試しました

case (epoch, (k, v)) if v.as[String] != "-1" => {

ありがとう。

4

3 に答える 3

0

必要に応じてif句を追加できます。たとえば、値kを確認できます。

....
case (epoch, (k, v)) if(!(k==-1))=> {
...
于 2013-02-13T06:34:18.493 に答える
0

次の解決策は私のために働いた:

   val il = for {
      (epoch, obj) <- retJson.fields
      (k, v) <- obj.as[JsObject].fields
      if v.as[String] != "-1"
    } yield (epoch, (k, v))

    val mapResult = il.groupBy(_._2._1)
      .mapValues(
        _.map {
          case (epoch, (k, v)) => {
            var epochDate = epoch.substring(0, 13).toLong
            epochDate = convertEpoch(epochDate, timezoneOffset)
            Seq[Double](epochDate, sensorCalculations(whatevers, Option(v.as[String])))
          }
        })
于 2013-02-13T23:58:34.463 に答える