繁体   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