我试图从Jira中提取问题并将它们放入List [Issue]中。 我想通了如何下载和解析JSON:从JSON中提取嵌套实体和值
val json = JsonParser.parse(content)
我还可以在JSON的根中提取一些数字:
val total = (json \ "total").extract[Int]
val maxResults = (json \ "maxResults").extract[Int]
println("Received " + total + " from " + maxResults + " issues")
但是,当我试图提取所有的问题清单
val issues = (json \ "issues")
println(issues)
issues.extract[List[Issue]]
我收到一个错误: 异常线程 “main” net.liftweb.json.MappingException:没有可用于ID值不知道如何将JString(13604)转换为int 我不明白为什么不能将13604转换为Int。 这里是我的情况下类:
case class Issue(id: Int,
key: String,
summary: String,
issueTypeName: String,
resolutionName: Option[String],
resolutionDate: Option[DateTime],
timeSpent: Option[Int],
creatorName: String,
reporterName: String,
updated: DateTime,
created: DateTime,
priorityName: String,
description: String,
dueDate: Option[DateTime],
statusName: String,
assigneeName: String,
projectId: Int,
projectKey: String,
projectName: String,
timeEstimate: Option[Int],
ownerName: String,
timeOriginalEstimate: Option[Int]
)
谁能帮我解决这个问题的诠释?
此外,JSON具有嵌套元素的一些属性,如项目具有嵌套的ID,键和名称。在我提取
json \ "issues"
的问题之前,我看到了另一个错误 - 我相信这是因为JSON提取器不知道他需要去嵌套元素。 我怎样才能让他知道呢? 我想我可以做这样的事情:的(问题< - 问题){ VAL ID =(问题\ “ID”)提取物[INT] 的println(ID) 。}
并使用issue \ "project" \ "id"
嵌套项目,然后创建新的Case类对象,并将其添加到列表var(可变,但我不知道如何以其他方式做)。但我收到编译时错误:
Error:(53, 16) value foreach is not a member of net.liftweb.json.JsonAST.JValue
for(issue <- issues) {
^
我是新来斯卡拉和整体的Java基础架构和框架,所以我会很感激的的代码样本。
PS。当我在我的案件类改变ID为String现在我得到另一个错误:
Exception in thread "main" net.liftweb.json.MappingException: No usable value for summary Did not find value which can be converted into java.lang.String
这是因为“摘要”嵌套入“场”。所以,我的第二个问题仍然是实际的: 2.我如何处理嵌套值?
和新的相关问题: 3.如果我想使用Int为id - 我该如何转换它?
感谢您的答复 - 这是有帮助的。但是现在我收到一个错误:线程“main”中的异常net.liftweb.json.MappingException:摘要没有可用的值 找不到可以转换为java.lang.String的值 - 这是因为“summary”是嵌套的进入“田野”。 1.我如何处理嵌套值? 2.如果我需要使用Int作为id - 我如何转换它? –
@KonstantinTrunin DId你在上面的评论中提到了你提到的问题的解决方案? TIA – texens