java - 在 Java/Groovy 中将 XML 转换为 Object[]

标签 java xml json groovy

我有这样的 XML:

<jobs>
  <no>2</no>
  <job>
    <status>Completed</status>
  </job>
  <job>
    <status>In Progress</status>
  </job>
</jobs>

我尝试过这个:

def xmlmapper = new XmlMapper()
def obj = xmlmapper.readValue(xml, Object[].class)

然后我获取 obj 并迭代它,但似乎一切都是 String,我希望“no”是 int。

我的问题是,有什么方法可以通过使用 Jackson Mapper 类来获取整数吗? 我认为,如果我首先使用标准 json 库将该 XML 转换为 JSON,然后将 JSON 转换为对象,那么它将包含整数。 Jackson 应该做同样的事情,首先转换为 json,但是 xmlmapper 的行为似乎不同,所以我不确定我在这里真正缺少什么......

最佳答案

您可以使用一个类来映射到所需字段的类型。例如。 (参见XXX)

@Grab('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.5.1')
import groovy.transform.ToString
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import com.fasterxml.jackson.dataformat.xml.annotation.*

@ToString
class Jobs {
    Integer no // XXX
    @ToString
    static class Job {
        String status
    }
    @JacksonXmlElementWrapper(useWrapping=false)
    List<Job> job
}

def xml="""<jobs><no>2</no><job><status>Completed</status></job><job><status>In Progress</status></job></jobs>"""

def xmlmapper = new XmlMapper()
def jobs = xmlmapper.readValue(xml, Jobs)
assert jobs.no==2
assert jobs.job.size()==jobs.no
assert jobs.toString()=='Jobs(2, [Jobs$Job(Completed), Jobs$Job(In Progress)])'

关于java - 在 Java/Groovy 中将 XML 转换为 Object[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584610/

相关文章:

java - 循环SQL语句

java - SDO API : how to make XSDHelper. 实例是否正确定义带有 <include> 的 XSD 架构?

json - 使用 Json.NET 将 F# 区分联合序列化为字符串

javascript - 使用 JSON.parse() 通过 JavaScript 忽略 JSON 中的函数

java - 带有 ViewPager 的 Android ClassNotFoundException

java - 使用 XPath 搜索和检索 XML 中的属性

xml - XSLT 在输出中包含空元素

json - 有人知道如何将 GMap 静态 JSON 转换为 HTML url?

java - 如何在 Encog 中暂停/序列化遗传算法?

c# - 如何在现有 XML 文件中删除声明并添加根元素 (C#)