我正在处理一个使用布尔查询的相当复杂的用例。在这种特殊情况下,我需要能够在Scala类中存储JSON,以帮助在多个API中进行查询。为这些查询创建复杂的JSON结构相当容易,但将它们构造成适合Jackson的类具有一定的挑战性。 (用类型安全的语言看似非常重要)
这是一个JSON示例:
{
"bool": {
"must": [{
"or": [
{
"term": {
"tz": "America/Vancouver"
}
}, {
"and": [
{
"term": {
"gender": "female"
}
}, {
"term": {
"age": 30
}
}
]
}
]
}]
}
}
您可以看到上面有嵌套运算符。所以建立一些东西来模拟这个是相当棘手的。有没有已经解决了这个问题的回购?有没有人有一个简单的解决方案?
case class Condition(
@(JsonProperty@field)("and")
val and: Option[List[FormulaCondition]],
@(JsonProperty@field)("or")
val or: Option[List[FormulaCondition]],
@(JsonProperty@field)("field")
val field: Option[String],
@(JsonProperty@field)("comparison")
val comparison: Option[String],
@(JsonProperty@field)("value")
val value: Option[String]
)
到目前为止,我刚刚创建了一个名为Condition
的基类来处理所有字符串字段,但这远不是一个优雅的解决方案。如果"term"
是Int
而不是String
,则此类失败。真的很感谢你的帮助。