2016-12-05 57 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