Поэтому я использую Retrofit2, чтобы получить файл JSON и прочитать его.
Часть данных - это координаты (blueCones и yellowCones), которые я хочу сохранить в объектах, а эти объекты - в массиве ArrayList.
Как разместить данные в объектах и сохранить их в списке для последующего использования.
Json-файл:
{
"engineTemp" : "90",
"speed" : "130",
"blueCones":[{
"x" : 6.0,
"y" : 5.0
},
{
"x" : 7.0,
"y" : 7.0
}
],
"yellowCones":[{
"x" : 11.0,
"y" : 5.0
},
{
"x" : 12.0,
"y" : 6.0
}
]
}
Интерфейс:
interface JsonApi {
@GET("/test.json")
fun getAllData(): Call<Data>
}
Start Retrofit:
val service = JsonParser.jsonParserInstance?.create(JsonApi::class.java)
val call = service?.getAllData()
call?.enqueue(object : Callback<Data>{
override fun onFailure(call: Call<Data>, t: Throwable) {
Toast.makeText(applicationContext, "Error reading JSON", Toast.LENGTH_LONG).show()
}
override fun onResponse(call: Call<Data>, response: Response<Data>) {
val body = response.body()
val engineTemp = body?.engineTemp
val speed = body?.speed
val blueCoordinates = body?.blueCones
val yellowCoordinates = body?.yellowCones
}
})
}
Соединение:
object JsonParser{
private var retrofit: Retrofit? = null
private val BASE_URL = "http://10.0.2.2:80"
val jsonParserInstance: Retrofit?
get(){
if(retrofit==null){
retrofit = retrofit2.Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
return retrofit
}
}
Классы синего и желтого конусов:
data class BlueCone(var x: Double, var y: Double)
data class YellowCone(var x: Double, var y: Double)