使用Jackson解析GSA XML列表

时间:2017-03-01 21:26:45

标签: java xml jackson google-search-appliance jackson-dataformat-xml

我从GSA服务器获得以下XML响应。 基本上它有

<GSP>
 <RES>
  <M>
  <R id=1>
  </R>
  <R id=2>
  </R>
 </RES>
</GSP>

如何用杰克逊解析这个XML?这是我的代码

@XmlRootElement(name = "GSP")
@JsonIgnoreProperties(ignoreUnknown = true)
public class RespuestaGSARoot {

@JacksonXmlProperty(localName = "RES")
private ResultadoBusqueda res;
}

@JacksonXmlRootElement(localName = "RES")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultadoBusqueda {

@JacksonXmlProperty(localName = "M")
private int total;

@JacksonXmlProperty(localName = "R")
private List<ResultadoPagina> resultados;
}


@XmlRootElement(name = "R")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultadoPagina {

@JacksonXmlProperty(localName = "U")
private String url;

@JacksonXmlProperty(localName = "T")
private String titulo;

@JacksonXmlProperty(localName = "S")
private String descripcion;}

他们都有定位器和吸气器,这只是一个例子。我可以去RES,但我不能让字段“resultados”填充R结果列表。 发生此错误:

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.tm.buscador.domain.ResultadoPagina] from String value ('http://negocios.movistar.com.ar/tienda/lineas-y-planes/comunidad-negocios-full/'); no single-String constructor/factory method
 at [Source: java.io.StringReader@642f9a77; line: 20, column: 99] (through reference chain: com.tm.buscador.domain.RespuestaGSARoot["RES"]->com.tm.buscador.domain.ResultadoBusqueda["R"]->java.util.ArrayList[0])

1 个答案:

答案 0 :(得分:0)

找到解决方案:

@JacksonXmlProperty(localName="R")
@JacksonXmlElementWrapper(useWrapping = false)
private List<ResultadoPagina> resultados;