Десериализовать поле JSON из сложного объекта в Scala - PullRequest
0 голосов
/ 13 октября 2018

Я работаю на языке программирования Scala

Моя отформатированная полезная нагрузка json

{
   "took":1,
   "timed_out":false,
   "_shards":{
      "total":25,
      "successful":25,
      "failed":0
   },
   "hits":{
      "total":1,
      "max_score":0.72271335,
      "hits":[
         {
            "_index":"machinename_guid",
            "_type":"type",
            "_id":"id",
            "_score":0.72271335,
            "_source":{
               "Name":"NAME",
               "Data":{
                  "Name":"NAME"
                  "Ver":"VERSION",
                  "$type":"lib, ServiceTest",
                  "ProductName":"PRODUCTNAME",
                  "Id":"ID"
                  "Data":"DATA TOBE RETRIVED"
               }
            }
         }
      ]
   }
}

Я хочу десериализовать следующий раздел в класс

 "Data":{
    "Name":"NAME"
    "Ver":"VERSION",
    "$type":"lib, ServiceTest",
    "ProductName":"PRODUCTNAME",
    "Id":"ID"
    "Data":"DATA TOBE RETRIVED"
 }

Какой самый простой способ добиться этого в scala?

1 Ответ

0 голосов
/ 13 октября 2018

Одним из самых простых вариантов будет десериализация полного ответа Json на класс и извлечение нужных данных из этого класса.

case class Data(name: String,ver: String,type: String,productName: String,id: String,data: String)
case class Foo(name: String,data: Data)
case class Result(_source: Foo, _score: Float, _index: String, _type: String, _id: String)
case class HitsResult(hits: List[Result], total: Int)
case class Response(hits: HitsResult)

Теперь вы можете десериализовать свой ответ Json на вышеприведенный * case-класс *, используя любую библиотеку JSON, и вы можете легко извлечь нужные данные, например Foo, из ответа.

...