API 请求 |好的HTTP | api 通过带有两个对象的 okhttp 请求
API Request | OkHttp | api request via okhttp with two objects
我是 API 网络中的新手,所以这里有一个关于它的问题。
有史以来最好的开始,但我的代码太多了...
我要解析的 json 文件:
{
"id":"541.23",
"username":"exampleUser",
"links":{
"TWITTER":null,
"YOUTUBE":"https://www.youtube.com/user/exampleUser"
"INSTAGRAM":null,
"TWITCH":null,
"MIXER":"https://mixer.com/user/"
"DISCORD":"DiscordUser#4576"
}
}
此代码使用 okhttp 和 gson:
class MainActivity : AppCompatActivity() {
lateinit var playerStats: PlayerStats
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fun fetchJsonGeneral() {
val url = "https://my.json.org/json
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
var mainHandler = Handler(this@MainActivity.getMainLooper())
override fun onResponse(call: Call, response: Response) {
mainHandler.post {
val body = response.body?.string()
if (body == null) return@post
println("Body:${body}")
val gson = GsonBuilder().create()
playerStats = gson.fromJson(body, PlayerStats::class.java)
println("PlayerStats: ${playerStats}")
textView2.text = playerStats.username
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
}
和我的 class 用于解析:
class PlayerStats(val username: String ,
val id: Double ,
val rank: String ,
val online: Boolean)
现在我想解析对象 "links"。我现在该怎么办?
你需要再创建一个class,比如
data class PlayerStatsLinks(val TWITTER:String?,
val YOUTUBE:String?,
val INSTAGRAM:String?,
val TWITCH:String?,
val MIXER:String?,
val DISCORD:String?)
并为您更新 PlayerStats
class
class PlayerStats(val username: String ,
val id: Double ,
val rank: String ,
val online: Boolean,
val links: PlayerStatsLinks)
我是 API 网络中的新手,所以这里有一个关于它的问题。
有史以来最好的开始,但我的代码太多了...
我要解析的 json 文件:
{
"id":"541.23",
"username":"exampleUser",
"links":{
"TWITTER":null,
"YOUTUBE":"https://www.youtube.com/user/exampleUser"
"INSTAGRAM":null,
"TWITCH":null,
"MIXER":"https://mixer.com/user/"
"DISCORD":"DiscordUser#4576"
}
}
此代码使用 okhttp 和 gson:
class MainActivity : AppCompatActivity() {
lateinit var playerStats: PlayerStats
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fun fetchJsonGeneral() {
val url = "https://my.json.org/json
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
var mainHandler = Handler(this@MainActivity.getMainLooper())
override fun onResponse(call: Call, response: Response) {
mainHandler.post {
val body = response.body?.string()
if (body == null) return@post
println("Body:${body}")
val gson = GsonBuilder().create()
playerStats = gson.fromJson(body, PlayerStats::class.java)
println("PlayerStats: ${playerStats}")
textView2.text = playerStats.username
override fun onFailure(call: Call, e: IOException) {
println("API execute failed")
}
})
}
和我的 class 用于解析:
class PlayerStats(val username: String ,
val id: Double ,
val rank: String ,
val online: Boolean)
现在我想解析对象 "links"。我现在该怎么办?
你需要再创建一个class,比如
data class PlayerStatsLinks(val TWITTER:String?,
val YOUTUBE:String?,
val INSTAGRAM:String?,
val TWITCH:String?,
val MIXER:String?,
val DISCORD:String?)
并为您更新 PlayerStats
class
class PlayerStats(val username: String ,
val id: Double ,
val rank: String ,
val online: Boolean,
val links: PlayerStatsLinks)