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