Android 在响应中获取空值

Android 在响应中获取空值,android,kotlin,retrofit,Android,Kotlin,Retrofit,我试图从Android中的Kotlin POJO类获得响应并映射到该类。但当我记录该类别的标签值时,会得到null。对于标题,我得到的响应值是热门链接 以下是实体类FeedX:- @Root(name = "feed", strict = false) class FeedX { @set: Element(name = "category") @get: Element(name = "category") v

我试图从Android中的Kotlin POJO类获得响应并映射到该类。但当我记录该类别的标签值时,会得到null。对于标题,我得到的响应值是热门链接

以下是实体类FeedX:-

@Root(name = "feed", strict = false)
class FeedX {
    @set: Element(name = "category")
    @get: Element(name = "category")
    var category: Category? = null
    val entry: List<Entry>? = null
    val id: String? = null
    val link: List<LinkX>? = null
    @set: Element(name = "title")
    @get: Element(name = "title")
    var title: String? = null
    val updated: String? = null

}
以下是Api接口:-

interface FeedApi {

    @GET("{type}/.rss")
    fun getPopularFeeds(
        @Path("type") type: String?
    ): Call<FeedX>?

}
接口FeedApi{
@获取(“{type}/.rss”)
有趣的大众需求(
@路径(“类型”)类型:字符串?
):打电话?
}
以下是主要活动:-

class MainActivity : AppCompatActivity() {
    private val BASE_URL = "https://www.reddit.com/r/"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val retrofit = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(SimpleXmlConverterFactory.create())
            .build()

        val service = retrofit.create(FeedApi::class.java)

        service.getPopularFeeds("popular")?.enqueue(object : Callback<FeedX> {
            override fun onFailure(call: Call<FeedX>, t: Throwable) {
                Log.d("Response Failed", "${t.localizedMessage}")
            }

            override fun onResponse(call: Call<FeedX>, response: Response<FeedX>) {
                if (response.isSuccessful) {
                    Log.d("Response Success", "${response.body()!!.title}") // for this I am getting value
                    Log.d("Response Success", "${response.body()!!.category?._label}")  // always getting null value
                } else {
                    Log.d("Response Failed jg", "${response.errorBody()}")
                }
            }
        })
    }
}
class MainActivity:AppCompatActivity(){
私有val BASE_URL=”https://www.reddit.com/r/"
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val reformation=reformation.Builder()
.baseUrl(基本URL)
.addConverterFactory(SimpleXmlConverterFactory.create())
.build()
val service=reformation.create(FeedApi::class.java)
service.getPopularFeeds(“popular”)?.enqueue(对象:回调{
覆盖失效时的乐趣(调用:调用,t:可丢弃){
Log.d(“响应失败”,“${t.localizedMessage}”)
}
覆盖fun onResponse(调用:调用,响应:响应){
if(response.issucessful){
Log.d(“Response Success”,“${Response.body()!!.title}”)//为此我得到了价值
Log.d(“响应成功”,“${Response.body()!!.category?\u label}”)//始终获取空值
}否则{
Log.d(“响应失败jg”,“${Response.errorBody()}”)
}
}
})
}
}

这是因为
title
包含一个值,而
category
标记不包含该值。请看下面的区别

<title>popular links</title>
流行链接


正如您所看到的,
category
标记是自动关闭的。

我刚刚检查了Reddit Json API的Json响应,它的catergory为null。但是,我没有得到一件事,如果您使用的是Kotlin,那么为什么不使用Reddit的Json响应呢?您可以通过
https://www.reddit.com/top.json?limit=10
,您也可以更改此限制。这里有一个非常详细的文章系列要创建(Reddit使用Kotlin),我大约在两个月前读过,它可能非常有用。如果这是类别的标签
label=“r/popular”
,那么它在json中提供,字段名
subreddit\u name\u前缀为
“subreddit\u name\u前缀”:“r/pics”
。检查这个和这个。
<title>popular links</title>
<category term="AskReddit" label="r/AskReddit"/>