簡體   English   中英

如何在 Kotlin 中將 ArrayList 轉換為 JSONArray()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM