【发布时间】:2019-05-05 03:03:07
【问题描述】:
我找到了我想尝试的 api,但响应不是 "full json" ,所以当我收到响应时,我得到了解析器错误。
像往常一样,我正在使用改造,所以或多或少的重要部分是这样的:
val retrofit = Retrofit.Builder()
.baseUrl(AwsomeAPIConstants.HOST)
.addConverterFactory(MoshiConverterFactory.create())
.build()
awsomeApi = retrofit.create(AwsomeaApiService::class.java)
正如我所说,API 的所有响应都是这样的:<sentence> = {<json>} 显然 MoshiConverter 无法解析它。
一些响应示例:
info={'timestamp':1292608331,'error':0}
info={'status':1,'error':0}
search={'error':1}
有什么办法解析吗?
【问题讨论】:
-
MoshiConverterFactory.create().asLenient()会像 {search={'error':1}} 那样工作。如果它根本不像 JSON,您可能需要先阅读部分响应正文,然后再委托。 -
谢谢@EricCochran。我会看看。今天下午告诉你一些事情。
-
@EricCochran 没有工作,实际上不是 json。如何解析正文?
-
我会有一个 Retrofit 响应正文转换器,它获取正文的源,找到第一个等号的索引,跳过该索引,然后委托给一个宽松的 JSON 响应正文转换器。
标签: android json api retrofit2 moshi