Как создать универсальный метод для анализа вложенного JSON? - PullRequest
0 голосов
/ 28 сентября 2018

Я попал в маршрут моего микросервиса.У меня есть общий API для общения с любым микросервисом и использования библиотеки JERKSON JSON.

import com.codahale.jerkson.Json

case class ApiResult[T](
                         private val content: Option[String],
                         private val error: Option[Throwable]
                       ) {
  def getRaw: String = this.content.getOrElse("null")

  def get()(implicit m: Manifest[T]): T = {
       Json.parse[T](this.content.get)
  }
  def either(implicit m: Manifest[T]): Either[Throwable, T] = error match {
    case None    => Right(get)
    case Some(e) => Left(e)
  }

}

Теперь у меня есть синглтон, в котором есть список методов для доступа к маршрутам другого сервиса.

object PurchasesTrait extends ApiResource {

def getData(payload: String): ApiResult[ProductPurchaseResponse] = 
r[ProductPurchaseResponse](POST, Url.core + "reports/productspurchased", payload)

 }
}

У меня есть два класса дел,

класс дел QualifyingProductSummary (upcCode: String, описание: Option [String], покупка: Option [Double]) класс дел ProductPurchaseResponse (qualifyingProducts: List [QualifyingProducts], count: Int)

purchaseTrait.getData(payload) will give me the ApiResult(json, Nnone) 

json:

{"qualifyingProductSummary":[{"upcCode":"6410077902","description":"Mini-Wheats Original","purchase":15.2},{"upcCode":"6410044886","description":"Corn Pops","purchase":13.7},{"upcCode":"041570055830","description":"Unsweetened Vanilla Beverage ","purchase":13.5},{"upcCode":"626027087802","description":"Organic Almond Milk Original","purchase":12.5}],"totalQualifyingProducts":19}

val data = purchaseTrait.getData(payload).either 

Чтобы получить данные из ApiResult при использовании любого из них,

Не удаетсяпроанализировать его в ProductPurchaseResponse из-за QualifyingProducts .Так как я могу добиться этого, используя ту же библиотеку?Я хочу, чтобы универсальный метод делал то же самое для других вложенных JSON.

Заранее спасибо.

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