2017-08-30 7 views
1

Circeを評価していて、JSONを変換するために配列のフィルタを使用する方法を見つけることができませんでした。私はそのウェブサイトとAPIのドキュメントでガイドを読んでも、まだ手掛かりはありません。大いに感謝します。オブジェクトアレイをフィルタリングしてcirceでjsonを変更する

サンプルデータ:

{ 
"Department" : "HR", 
"Employees" :[{ "name": "abc", "age": 25 }, {"name":"def", "age" : 30 }] 
} 

タスク:別のJSONにJSONを変換するために従業員のためにフィルタを使用する方法

、例えば、50歳以上の年齢ですべての従業員?

何らかの理由で、JSONが生成される前にデータソースからフィルタリングすることができません。これを行うための

答えて

1

1つの可能な方法は

val data = """{"Department" : "HR","Employees" :[{ "name": "abc", "age": 25 }, {"name":"def", "age":30}]}""" 

def ageFilter(j:Json): Json = j.withArray { x => 
    Json.fromValues(x.filter(_.hcursor.downField("age").as[Int].map(_ > 26).getOrElse(false))) 
} 
val y: Either[ParsingFailure, Json] = parse(data).map(_.hcursor.downField("Employees").withFocus(ageFilter).top.get) 

println(s"$y") 
である

おかげ

関連する問題