Scala Json嵌套了

时间:2018-03-08 15:17:59

标签: json scala

任何人都可以帮助我如何使用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"} },
      ]
    }
  }
}

1 个答案:

答案 0 :(得分:0)

在这些情况下我可以使用lift-json。 lift-json易于实现和理解。

我包括所有步骤:

  1. 包含在build.sbt中(根据maven等更改此内容)

    “net.liftweb”%“lift-json_2.11”%“2.6.2”

  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)
    
  3. 这将产生类似于:

    的输出
      

    {“size”:“value”,“query”:{       “bool”:{         “必须”:[           {             “比赛”: {               “col_1”:“价值”             }           },           {             “比赛”: {               “col_2”:“价值”             }           },           {             “比赛”: {               “col_3”:“value”             }           },           {             “比赛”: {               “col_4”:“value”             }           },           {             “比赛”: {               “col5”:“价值”             }           },           {             “比赛”: {               “col_6”:“value”             }           }         ]       }}