Объединение нескольких JObjects в списке - Json4s - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь объединить несколько объектов JObject в один объект JObject.У меня есть список объектов JOb, которые я пытаюсь перебрать и объединить каждый из них в один объект, по сути создав один большой объект json.

Ниже работает нормально, однако, когда в списке это не работает,Я знаю, что я делаю что-то не так, но не уверен, что?

val obj1: JObject = RancherHelper.convertToJObject(containers.head)
val obj2: JObject = RancherHelper.convertToJObject(containers(1))
val obj3: JObject = RancherHelper.convertToJObject(containers(2))

val x: JObject = obj1 merge obj2 merge obj3

Это не работает:

def mergeJObjects(containers: List[JObject]): JObject = {
    val fullJsonObject: JObject = JObject()
    val singleObject = for{
      container <- containers
      fullObj = fullJsonObject.merge(container)
    } yield fullObj

    fullJsonObject
}

1 Ответ

0 голосов
/ 19 сентября 2018

Вместо отображения списка, сверните его:

def mergeJObjects(containers: List[JObject]): JObject = {
  containers.foldLeft(JObject())((merged, next) => merged.merge(next))
}

То, что вы написали выше, является синтаксическим сахаром для этого:

val fullJsonObject = JObject()
val singleObject = containers.map { container =>
  val fullObj = fullJsonObject.merge(container)
  fullObj
}
fullJsonObject

По сути, вы отображаете контейнерысписок, и для каждого контейнера вы объединяете его с пустым объектом JSON (fullJsonObject).Следовательно, singleObject ничем не отличается от containers;это список ваших оригинальных объектов JSON.Более того, поскольку fullJsonObject является неизменным пустым JObject, вы просто возвращаете пустой объект JSON в конце вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...