Android Kotlin-使用RxJava的改装请求给出空响应

Android Kotlin-使用RxJava的改装请求给出空响应,android,kotlin,rx-java,retrofit,rx-android,Android,Kotlin,Rx Java,Retrofit,Rx Android,我想从卫报API上得到消息。我得到了零响应,一切都在下面。我正在使用Kotlin、改装和RxJava。我知道存在一些错误的变量/对象,但我会在解决该问题时更改它们 改装接口 @get:GET("search?api-key=test") val news:Observable<News> { response:{ status:"ok", userTier:"developer", total:2063064,

我想从卫报API上得到消息。我得到了零响应,一切都在下面。我正在使用Kotlin、改装和RxJava。我知道存在一些错误的变量/对象,但我会在解决该问题时更改它们

改装接口

@get:GET("search?api-key=test")
    val news:Observable<News>
{  
   response:{  
      status:"ok",
      userTier:"developer",
      total:2063064,
      startIndex:1,
      pageSize:10,
      currentPage:1,
      pages:206307,
      orderBy:"newest",
      results:[  
         {  
            id:"politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            type:"article",
            sectionId:"politics",
            sectionName:"Politics",
            webPublicationDate:"2018-09-24T18:57:48Z",
            webTitle:"Keir Starmer: Labour does not rule out remaining in EU as option",
            webUrl:"https://www.theguardian.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            apiUrl:"https://content.guardianapis.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            isHosted:false,
            pillarId:"pillar/news",
            pillarName:"News"
         }
      ]
   }
}
和加载数据的函数

private fun loadUrlData() {
        compositeDisposable.add(jsonApi.news
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe{news -> displayData(news)})
    }
JSON示例

@get:GET("search?api-key=test")
    val news:Observable<News>
{  
   response:{  
      status:"ok",
      userTier:"developer",
      total:2063064,
      startIndex:1,
      pageSize:10,
      currentPage:1,
      pages:206307,
      orderBy:"newest",
      results:[  
         {  
            id:"politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            type:"article",
            sectionId:"politics",
            sectionName:"Politics",
            webPublicationDate:"2018-09-24T18:57:48Z",
            webTitle:"Keir Starmer: Labour does not rule out remaining in EU as option",
            webUrl:"https://www.theguardian.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            apiUrl:"https://content.guardianapis.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
            isHosted:false,
            pillarId:"pillar/news",
            pillarName:"News"
         }
      ]
   }
}
模型类

data class News( val status: String, val userTier: String, val total: Int, val startIndex: Int, val pageSize: Int, val currentPage: Int, val pages: Int, val orderBy: String, val results: List<Result>)
数据类新闻(val status:String,val userTier:String,val total:Int,val startIndex:Int,val pageSize:Int,val currentPage:Int,val pages:Int,val orderBy:String,val results:List)

我想问题在于最后一个函数或接口,但我找不到解决方案。

问题在于数据模型类

您的JSON有一个外部节点(
response
),如果您试图返回一个
News
,您将无法得到它,因为
reformation
无法将JSON映射到
News
类。添加一个名为
Response
的外部类,该类包含一个名为Response的字段,该字段的类型为
News
,应该可以修复它

像这样:

class Response(val response: News)

注意:我没有在课程前面添加
数据
,因为您不一定需要它。
data
关键字只是自动为您添加了一些额外的内容,如
toString()
equals()
hashCode()
,但是除非您实际将它们用于任何用途,否则我不建议添加
data
关键字,因为它当时非常无用。

您的数据模型(
News
)如何在Kotlin中看起来像?数据类新闻(val status:String,val userTier:String,val total:Int,val startIndex:Int,val pageSize:Int,val currentPage:Int,val pages:Int,val orderBy:String,val results:List)是的,这就是问题所在。:-)您的JSON有一个外部节点(
响应
),如果您试图返回一个
新闻
,您将无法得到它,因为改型无法将JSON映射到
新闻
类。添加一个名为
Response
的外部类,该类包含一个名为
Response
的字段,该字段的类型为
News
,应该可以修复它。非常感谢!我没有看到响应是另一个节点。正如您所说,我创建了类响应,其中有一个带有News对象的构造函数。现在一切都好了。再次感谢:)没问题-我将添加它作为答案,这样您就可以结束问题:)