2016-12-05 54 views
1

我使用Jackson註解解析JSON文件,特別是使用Scala中的JsonProperty。使用Jackson註解解析嵌套的Json在Scala中

JSON文件來如:

{ 
    "expand":"schema", 
    "maxResults":50, 
    "total":542, 
    "issues":[ 
     { 
     "expand":"operation,transit", 
     "id":"23121", 
     "fields":{ 
      "customfield":null, 
      "priority":{ 
       "name":"This", 
       "id":"35" 
      } 
     } 
     } 
    ] 
} 

我創建了一個案例類,做了很好的工作在解析頂級屬性,但我不必解析嵌套時的值的問題(例如issues.fields.priority.id

代碼的片段是:

case class GetResults(

@JsonProperty("expand") expand:String 

@JsonProperty("maxResults") maxResults: Int 

@JsonProperty("total") total: Int 

@JsonProperty("issues") issues: JValue 

這樣,我得到所有包含在議題爲JValue值的,但我不能調用像issues.fields.priority.id

我試圖分析它們: @JsonProperty("issues") issues.fields.priority.id: Int,但它不起作用。

任何線索我怎麼能通過使用這個特定的案例類和傑克遜註釋?

+0

嗨iolkos,你JSON有一個奇怪的外觀。你能修好嗎? –

+0

對於你的問題,你不想爲fields屬性定義一個case類嗎? –

+0

但是,如何在「問題」屬性中定義一個案例類?@AlbanDericbourg。你的意思是關於JSON格式? – Iolkos

回答

0

您可以定義巢式病例類:

case class GetResults (
    expand: String, 
    maxResults: Int, 
    total: Int, 
    issues: Seq[Issues] 
) 

case class Issues (
    expand: String, 
    id: Int, 
    fields: Fields 
) 

case class Fields (
    customfield: ???, 
    priority: Priority 
) 

case class Priority (
    name: String, 
    id: Int 
) 

我刪除了@JsonProperty註釋來緩解閱讀,但你確實有添加它們就像你一樣。

+0

問題是在Fields內部,大約有150個屬性需要手動定義,其中很多屬性(例如「Priority」需要進一步的定義)。 我想知道是否有一個更容易和更自動的方式,可以幫助我解析後閱讀我想要的具體值。 – Iolkos

+0

將它們映射爲Map? –

+0

這將如何工作? – Iolkos