Создание json с разными ключами и значениями с помощью spray

Мое требование - создать json, например

"filters":{  
        "key1":"value1",
        "key2":"Value2",
        "key3":"Value3",
    .........
     },

Здесь все имена ключей и значений разные. то есть ключи не имеют фиксированного типа. Также количество ключей и значений может меняться в разное время. Как я могу работать над такой проблемой.

Я знаю, что в случае класса ключи являются постоянными, изменяется только значение. Я новичок в спреях. Мне нужны все ваши предложения, если возможно, несколько примеров или примеров кодов. Пожалуйста, дайте мне знать, как мне начать. Заранее спасибо.


person user1548787    schedule 29.03.2016    source источник


Ответы (1)


Самое простое решение:

import spray.json._
import spray.json.DefaultJsonProtocol._

      val map = Map(
        "key1" -> "value1",
        "key2" -> "Value2",
        "key3" -> "Value3"
      )

      def jsonWithMap(map: Map[String, String]): Map[String, Map[String, String]] =
        Map("filters" -> map)

      println(s"${jsonWithMap(map).toJson}")

Обновить

Согласно комментарию код должен выглядеть так:

import spray.json._
import spray.json.DefaultJsonProtocol._

object MyJsonProtocol extends DefaultJsonProtocol {
    implicit val filterFormat = jsonFormat1(FilterComponent.apply)
  }
  import MyJsonProtocol._
  def createfilterJSON(): JsValue = {
    val configMap = Map("time_start" -> "request", "time_end" -> "request", "time_type" -> "request")
    FilterComponent(configMap).toJson
  }

  println(s"$createfilterJSON")//just for debug
person Andrzej Jozwik    schedule 29.03.2016
comment
Спасибо Анджей за ответ. - person user1548787; 29.03.2016
comment
case class FilterComponent(filter:Map[String, String]) object MyJsonProtocol extends DefaultJsonProtocol { неявный val filterFormat = jsonFormat1(FilterComponent.apply)} def createfilterJSON(sc:SparkContext,queryParameter: QueryParameter):JsValue={ val configMap = Map( time_start -›request, time_end-›request, time_type-›request ) val filterjson = FilterComponent(configMap).toJson return kpijson; } ошибка: не удалось найти неявное значение для параметра доказательства типа - person user1548787; 29.03.2016
comment
Привет, Анджей. Пожалуйста, проверьте правильность приведенного выше или нет. Я получил 2 ошибки 1. не удалось найти неявное значение для параметра доказательства типа 2. недостаточно аргументов для метода jsonFormat . Мне нужно ваше предложение, пожалуйста, проверьте его. - person user1548787; 29.03.2016
comment
Когда я запустил программу urs, я получил Невозможно найти класс типа JsonWriter или JsonFormat в jsonWithMap(map).toJson}) . Также не хватает аргументов для метода toJson - person user1548787; 29.03.2016