[英]How to convert ArrayList to JSONArray() in Kotlin
我的 POJO 類中有一個列表:
"userQuoteTravellers": [
{
"id": 1354,
"quoteId": 526,
"travellerId": null
}
]
我想傳遞這個列表,因為它在JSONArray
並將其傳遞為:
JSONArray.put(list)
它被發送為:
"userQuoteTravelers": [ "[]" ]
但我想把它作為
“userQuoteTravelers”:[]
如何在不使用任何循環的情況下在 Kotlin 中實現這一點?
如果我正確讀取了 JSONArray 構造函數,您可以從任何集合(arrayList 是集合的子類)構建它們,如下所示:
val list = ArrayList<String?>()
list.add("jigar")
list.add("patel")
val jsArray = JSONArray(list)
您還可以使用 GSON 讀取 json,請參見以下示例:
import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName
class userQuoteTravellers {
@SerializedName("id")
@Expose
var id: Int? = null
@SerializedName("quoteId")
@Expose
var quoteId: Int? = null
@SerializedName("travellerId")
@Expose
var travellerId: Any? = null
}
put
將列表作為元素添加到JSONArray
。 那不是你想要的。 您希望JSONArray
表示列表。
JSONArray
為此提供了一個構造函數:
val jsonArray = JSONArray(listOf(1, 2, 3))
但是有一個更簡單的方法。 您無需擔心單個屬性。 只需通過整個 POJO。
假設你有這個:
class QuoteData(val id: Int, val quoteId: Int, travellerId: Int?)
class TravelerData(val userQuoteTravellers: List<QuoteData>)
val travelerData = TravelerData(listOf(QuoteData(1354, 546, null)))
您只需將travelerData
傳遞給JSONArray
構造函數:
val travelerDataJson = JSONArray(travelerData)
它將像這樣表示:
"userQuoteTravellers": [ { "id": 1354, "quoteId": 526, "travellerId": null } ]
有依賴關系
添加到您的gradle:
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
將 ArrayList 轉換為 JsonArray
val jsonElements = (JsonArray) new Gson().toJsonTree(itemsArrayList)
無依賴
val jsonElements = JSONArray(itemsArrayList)
試試這個: val userQuote = response.getJSONArray("userQuoteTravellers")
然后像這樣調用里面的數據:
for (i in 0 until userQuote.length()) {
val quotes = userQuote.getJSONObject(i)
// then call the other data here
}
你可以通過使用這個來實現這一點
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
var gson = Gson()
var jsonData = gson.toJson(PostPojo::class.java)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.