我需要使用Reform查找并分离json中的值。有了这个代码,我得到了整个身体:
val retrofitCliente = NetworkUtils.getRetrofitInstance("https://aprimorandoapi.000webhostapp.com/")
val endpointiface = retrofitCliente.create(Endpoint::class.java)
val call: Call<JsonObject?>? = endpointiface.getNoticias()
var data = ArrayList<String>()
endpointiface.getNoticias()?.enqueue(object : retrofit2.Callback<JsonObject?> {
override fun onResponse(call: Call<JsonObject?>, response: Response<JsonObject?>) {
val corpo = response.body()
val indice1 = data.indexOf("noticias")
Log.d("Corpo json",+corpo.toString())
}
override fun onFailure(call: Call<JsonObject?>, t: Throwable) {
Log.d("falhoujson","falhajson")
}
但是,当我的方法返回时,我想在ArrayList中插入每个项。我的JSON是:
{
"noticias":[ {
"texto": "Vagas remanescentes para cursos técnicos no CEFORES. Para se inscrever, basta clicar no link abaixo",
"url_imagem": "teste"
},
{
"texto": "PROACE divulga a abertura do 2º Processo Seletivo Simplificado de Monitoria Inclusiva na modalidade de Apoio Pedagógico Remoto para o calendário acadêmico 2022/01",
"url_imagem": "teste"
},
{
"texto": "Projeto fomenta expressão e diálogo de cultura do campo",
"url_imagem": "teste"
},
{
"texto": "Ministério das Relações Exteriores endossa candidatura do Projeto Geopark Uberaba - Terra de Gigantes",
"url_imagem": "teste"
}
]
}
提前谢谢。
将其添加到您的build.gradle(模块(和SyncNow中:
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
implementation 'com.google.code.gson:gson:2.8.9'
为您的数据项创建一个数据类
data class Noticia(
@SerializedName("texto")
val text: String,
@SerializedName("url_imagem")
val image: String)
在未来帮自己一个忙,并使用插件"来自JSON的Kotlin数据类"-你会在市场上找到它
定义接口(单独的文件(我不确定@GET("noticias.json"(,我假设只有noticias.json
interface NoticiaApiService {
@GET("noticias.json")
fun getNoticias(): Call<List<Noticia>>
}
拨打电话(这很不干净,但应该可以(
fun getNoticias(){
val retrofit: Retrofit =
Retrofit
.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://aprimorandoapi.000webhostapp.com/")
.build()
val restInterface = retrofit.create(NoticiaApiService::class.java)
val noticiasCall = restInterface.getNoticias()
noticiasCall.enqueue(
object : Callback<List<Noticia>> {
override fun onResponse(call: Call<List<Noticia>>, response: Response<List<Restaurant>>) {
response.body()?.let {
//i assume you will save the values in your viewModel?
//you can also same it somewhere else
noticasLiveData.value = it
}
}
override fun onFailure(call: Call<List<Noticia>>, t: Throwable) {
t.printStackTrace()
}
}
)
}
快乐编码