2017-08-17 82 views
1

我正在使用retrofitSimpleXMLConverterFactory参数不匹配; SimpleXML

,我总是得到一个

ConstructorException: Parameter 'success' does not have a match in class ResponseInfo 

而且我不知道什么可能是错误的。 xml非常简单,我只需要success节点中的字符串。

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <success>LoremIpsum</success> 
</response> 

ResponseInfo:

@Root(strict = false, name = "response") 
data class ResponseInfo(@Element(required = false, name = "success) var success: String) 

编辑1:我测试的API调用,并返回给定XML。

感谢

回答

3

所以最后,我设法自己解决问题。

问题在于ResponseInfo类。我改成

@Root(strict = false, name="response) 
data class ResponseInfo @JvmOverloads constructor(
    @field:element(name = "success") var success: String = "" 
) 

一切正常。

你需要有一个空的构造,所有属性必须是可变的(var),你在的@Element -Annotation前追加field:@JvmOverloads结合默认值将为您创建空构造函数以及所有其他构造函数变体。

1

如果你想避免使用deafult构造函数,你将不得不使用fieldparamuse-site target s。这将是这个样子:

@Root(strict = false, name = "response") 
data class ResponseInfo(
    @field:Element(name = "success) @param:Element(name = "success) var success: String 
) 

正如this comment说,它好像没有两者结合使用,网站目标的任何方式。