任何人都可以帮助我如何使用scala实现以下Json。请注意,col_1到Col_6基于我的输入。意味着在这个Json中可能有一个col或两个col或3 col ..等等。
以下是所需的输出
{
"size" : value,
"query" : {
"bool" : {
"must" : [
{ "match": {"col_1": "value"} },
{ "match": {"col_2": "value"} },
{ "match": {"col_3": "value"} },
{ "match": {"col_4": "value"} },
{ "match": {"col_5": "value"} },
{ "match": {"col_6": "value"} },
]
}
}
}
答案 0 :(得分:0)
在这些情况下我可以使用lift-json。 lift-json易于实现和理解。
我包括所有步骤:
包含在build.sbt中(根据maven等更改此内容)
“net.liftweb”%“lift-json_2.11”%“2.6.2”
导入并实施(减少变量数量,因为这是出于示例目的)
import net.liftweb.json.DefaultFormats
import net.liftweb.json.Serialization.write
case class Must(`match`: Map[String, String])
case class Bool(must: List[Must])
case class Query(bool: Bool)
case class Json(size: String, query: Query)
implicit val format = DefaultFormats
val colList = List("col_1", "col_2", "col_3", "col_4", "col5")
val listBuffer = new ListBuffer[Must]
for (col <- colList) {
listBuffer += Must(Map(col -> "value"))
}
val mustList = listBuffer.toList
/** mustList will look like this:
val mustList = List(Must(
Map("col_1" -> "value")
))
*/
val v = write(Json("value", Query(Bool(mustList))))
println(v)
这将产生类似于:
的输出{“size”:“value”,“query”:{ “bool”:{ “必须”:[ { “比赛”: { “col_1”:“价值” } }, { “比赛”: { “col_2”:“价值” } }, { “比赛”: { “col_3”:“value” } }, { “比赛”: { “col_4”:“value” } }, { “比赛”: { “col5”:“价值” } }, { “比赛”: { “col_6”:“value” } } ] }}