簡體   English   中英

將JSON序列化為Scala case類

[英]Serialize JSON to Scala case class

我需要將JSON序列化為scala case類。 這不是有關JSON序列化的問題,而是有關scala中的類映射的問題。

JSON的示例:

{
  "id": 98433,
  "name": "Santa Cruz Bronson",
  "vendor": {
    "id": 344,
    "name": "Santa Cruz"
  },
  "category": {
    "id": 132,
    "name": "Bicycles"
  },
  "annotation": "The best downhill cycle",
  "description": "Rich text is here",
  "classification": {
    "id": 12,
    "name": "138-cycles"
  },
  "properties": [{
    "id": 84436,
    "group": {
      "id": 19433,
      "name": "Suspension"
    },
    "name": "Fork turn",
    "description": "Fork turn defines bike suspension",
    "value": "129mm"
  }, {
    "id": 84436,
    "group": {
      "id": 19433,
      "name": "Suspension"
    },
    "name": "Fork turn",
    "description": "Fork turn defines bike suspension",
    "value": "129mm"
  }, {
    "id": 84436,
    "group": {
      "id": 19433,
      "name": "Suspension"
    },
    "name": "Fork turn",
    "description": "Fork turn defines bike suspension",
    "value": "129mm"
  }, {
    "id": 84436,
    "group": {
      "id": 19433,
      "name": "Suspension"
    },
    "name": "Fork turn",
    "description": "Fork turn defines bike suspension",
    "value": "129mm"
  }],
  "isGroup": true
}

我知道如何為頂級地圖構建案例類:

case class ProductDocument(id: Long, name: String, annotation: String, description: String, isGroup: String) extends DocumentMap {
    ...
}

但是我不知道如何為供應商,類別,屬性等建立價值。

我想將此JSON的映射定義為一個類文件。

每個嵌套的json對象都應定義為自己的case類,這樣:

case class Vendor(id: Long, name: String)
case class ProductDocument(id: Long, ..., vendor: Vendor)

這些properties將成為Property案例類的List

case class Property(id: Long, group: PropertyGroup, name: String, description: String, value: String)
case class PropertyGroup(id: Long, name: String)
case class ProductDocument(id: Long, ..., properties: List[Property])

假設您正在使用json4s序列化。

對於scala-json映射,您至少有兩個選擇:

Salat-最初為Mongo提供類似於ORM的功能,但僅適用於JSON序列化(免責聲明:我在Novus工作)

json4s-請參見“序列化”部分

好消息是,由於Scala案例類的結構已經很容易理解,因此您通常不必在JSON字段和案例類字段之間定義“映射”。 正如Arne Claassen所概述的那樣,您只需編寫案例類以匹配JSON文檔的結構/字段即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM