如何从 Android 上的改造响应中获取嵌套的 JSON 对象和数组?
How to get nested JSON object and array from retrofit response on Android?
我想做的是使用改造
获取嵌套的JSON对象和数组形成网络响应
响应是:
{
"user": [
{
"name": "Kaleigh Stamm",
"post": {
"id": 1234,
"link": [
"https://www.link1.com"
"https://www.link2.com"
"https://www.link3.com"
]
}
}
}
我可以毫无问题地获取名称,但我无法解析 post 对象,也无法解析 link 数组,它可能为空或有多个 links .我现在需要实施一些 post class 但不知道如何去做
我有一个用户class
class user {
@SerializedName("name")
var name = ""
}
我有接口
interface userService {
@GET("baseurlinfo")
fun getUserList() : Call<userResponse>
}
这是我的主要
var BaseUrl = "https://baseURL.com/"
val retrofit = Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
val service = retrofit.create(userService::class.java)
val call = service.getUserList()
call.enqueue(object : Callback<userResponse> {
override fun onResponse(call: Call<userResponse>, response: Response<userResponse>) {
if (response.code() == 200) {
val userResponse = response.body()!!
for( user in userResponse.user){
Log.v("MainActivity", user.name)
}
}
}
override fun onFailure(call: Call<userResponse>, t: Throwable) {
Log.v("MainActivity", t.toString())
}
})
任何有关如何处理 JSON 回复的其余部分的帮助或建议都将非常有用,谢谢。
您的用户 class 不完整。先在本站JSON下方添加(json to pojo)。
然后获取 java class 然后将其粘贴到 android studio 中。然后 android studio 自动将其转换为 kotlin class。然后只需从创建的用户 class 获取您的链接。
另外,您的 JSON 格式不正确,应该如下所示:
{
"user": [
{
"name": "Kaleigh Stamm",
"post": {
"id": 1234,
"link": [
"https://www.link1.com",
"https://www.link2.com",
"https://www.link3.com"
]
}
}
]
}
创建一个 post class 并从用户 class
调用它
class userPost {
@SerializedName("id")
private var mId: Int? = null
@SerializedName("link")
private var mLink: ArrayList<String>? = null
fun getId(): Int {
return mId!!
}
fun setId(id: Int) {
mId = id
}
fun getLink(): ArrayList<String> {
return mLink!!
}
fun setLink(link: ArrayList<String>) {
mLink= link
}
}
并在用户 class 上添加
@SerializedName("post")
private var mPost: userPost? = null
fun getPost(): userPost? {
return mPost
}
fun setPost(post: userPost) {
mPost = post
}
我想做的是使用改造
获取嵌套的JSON对象和数组形成网络响应响应是:
{
"user": [
{
"name": "Kaleigh Stamm",
"post": {
"id": 1234,
"link": [
"https://www.link1.com"
"https://www.link2.com"
"https://www.link3.com"
]
}
}
}
我可以毫无问题地获取名称,但我无法解析 post 对象,也无法解析 link 数组,它可能为空或有多个 links .我现在需要实施一些 post class 但不知道如何去做
我有一个用户class
class user {
@SerializedName("name")
var name = ""
}
我有接口
interface userService {
@GET("baseurlinfo")
fun getUserList() : Call<userResponse>
}
这是我的主要
var BaseUrl = "https://baseURL.com/"
val retrofit = Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
val service = retrofit.create(userService::class.java)
val call = service.getUserList()
call.enqueue(object : Callback<userResponse> {
override fun onResponse(call: Call<userResponse>, response: Response<userResponse>) {
if (response.code() == 200) {
val userResponse = response.body()!!
for( user in userResponse.user){
Log.v("MainActivity", user.name)
}
}
}
override fun onFailure(call: Call<userResponse>, t: Throwable) {
Log.v("MainActivity", t.toString())
}
})
任何有关如何处理 JSON 回复的其余部分的帮助或建议都将非常有用,谢谢。
您的用户 class 不完整。先在本站JSON下方添加(json to pojo)。 然后获取 java class 然后将其粘贴到 android studio 中。然后 android studio 自动将其转换为 kotlin class。然后只需从创建的用户 class 获取您的链接。 另外,您的 JSON 格式不正确,应该如下所示:
{
"user": [
{
"name": "Kaleigh Stamm",
"post": {
"id": 1234,
"link": [
"https://www.link1.com",
"https://www.link2.com",
"https://www.link3.com"
]
}
}
]
}
创建一个 post class 并从用户 class
调用它class userPost {
@SerializedName("id")
private var mId: Int? = null
@SerializedName("link")
private var mLink: ArrayList<String>? = null
fun getId(): Int {
return mId!!
}
fun setId(id: Int) {
mId = id
}
fun getLink(): ArrayList<String> {
return mLink!!
}
fun setLink(link: ArrayList<String>) {
mLink= link
}
}
并在用户 class 上添加
@SerializedName("post")
private var mPost: userPost? = null
fun getPost(): userPost? {
return mPost
}
fun setPost(post: userPost) {
mPost = post
}