有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Jackson反序列化PMD输出

我正在尝试使用Jackson反序列化PMD的输出。具体来说,我想获得违规行为及其数据的列表,PMD以以下形式提供给我:

<pmd-cpd>
<duplication lines="615" tokens="1188">
<file line="126" path="Some\Path\Here"/>
<file line="126" path="Some\Path\Here"/>
<codefragment>
<![CDATA[
SomeCodeFragmentHere
]]>
</codefragment>
</duplication>
MoreDuplications
</pmd-cpd>

我目前有以下类需要反序列化:

public class PmdResults {
  @JacksonXmlProperty(localName = "duplication")
  List<CodeClone> codeClones;
}

public class CodeClone {
  public int lines;
  public int tokens;

  @JacksonXmlProperty(localName = "file")
  public List<SourceFile> files;

  public CodeClone() { super(); }
  
  public static class SourceFile {
    public int line;
    public String path;
  }
}

目前,Jackson能够正确地反序列化根以及“行”和“令牌”。但是,它没有尝试将这两个“file”元素反序列化为SourceFile对象,而是直接查找一个“line”属性来反序列化这些元素的属性。我也不确定如何让Jackson忽略“codefragment”元素,因为我实际上并不需要这些信息。我非常感谢在这方面的任何帮助,因为我有点难以理解为什么它能够识别复制元素应该成为列表中的对象,而不是似乎遵循相同格式的文件元素

注:实际上,我更希望完全摆脱PmdResults类,直接反序列化列表<;CodeClone>;,但我也找不到任何办法


共 (0) 个答案