我使用retrofit
用SimpleXMLConverterFactory
.
我总是得到一个
ConstructorException: Parameter 'success' does not have a match in class ResponseInfo
Run Code Online (Sandbox Code Playgroud)
我不知道会出现什么问题.xml非常简单,我只想要success
节点中的字符串.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>LoremIpsum</success>
</response>
Run Code Online (Sandbox Code Playgroud)
ResponseInfo:
@Root(strict = false, name = "response")
data class ResponseInfo(@Element(required = false, name = "success) var success: String)
Run Code Online (Sandbox Code Playgroud)
编辑1:我测试了Api调用并返回给定的xml.
谢谢
lam*_*pen 11
最后,我成功解决了这个问题.
问题是ResponseInfo
班级.我改成之后
@Root(strict = false, name="response)
data class ResponseInfo @JvmOverloads constructor(
@field:element(name = "success") var success: String = ""
)
Run Code Online (Sandbox Code Playgroud)
一切都很好.
你需要一个空构造函数,所有属性必须是mutable(var
),你必须field:
在@Element
-Annotation 前面追加.@JvmOverloads
结合默认值将为您创建空构造函数以及所有其他构造函数变体.
如果要避免使用笨拙的构造函数,则必须同时使用field
和param
use-site target。它看起来像这样:
@Root(strict = false, name = "response")
data class ResponseInfo(
@field:Element(name = "success") @param:Element(name = "success") var success: String
)
Run Code Online (Sandbox Code Playgroud)
如评论中所述,似乎没有任何方法可以将两个使用场所目标结合起来。
归档时间: |
|
查看次数: |
1627 次 |
最近记录: |