Android Kotlin - 将 jsonArray 转换为 Array<String>
Posted
技术标签:
【中文标题】Android Kotlin - 将 jsonArray 转换为 Array<String>【英文标题】:Android Kotlin - convert jsonArray to Array<String> 【发布时间】:2019-05-12 23:06:21 【问题描述】:我从 API 得到一个数组:
val pics = response.getJSONArray("pics")
pics
包含类似:
["https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/19\/55\/497173801955.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/10\/34\/242830811034.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/86\/23\/808728238623.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/90\/41\/146747399041.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/47\/41\/672475854741.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/63\/94\/771076926394.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/36\/42\/182330463642.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/29\/96\/948397532996.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/82\/54\/761385508254.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/41\/42\/142837364142.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/66\/25\/215324906625.jpg"]
我需要把它放到ArrayList<String>
这是将 JAVA 解决方案转换为 kotlin 后的多次尝试之一:
val list = ArrayList<String>()
for (i in 0 until pics.length())
list.add(pics.getJSONObject(i).getString("name"))
然后当我尝试在 ViewPager 中使用 list
时,我得到类型不匹配:
Required: Array<String>
Found:kotlin.collections.ArrayList<String
如何做到这一点??
为什么不能像 php smh 那样只是简单的数组(),这太烦人了
【问题讨论】:
【参考方案1】:Array<String>
和 ArrayList<String>
是两种不同的类型。
您需要提供的是Array<String>
,但您实际提供的是ArrayList<String>
。
val list = Array(pics.length())
pics.getString(it)
【讨论】:
如果您有一个实际的 JSONArray 并且想要转换为一个 ArrayList
实现length()
并有getString(int)
方法来检索第n 个位置的String 元素,这对你不起作用吗?跨度>
感谢您的回复。我现在实际上已经开始工作了。我只是在评论它对我不起作用的事实,使用 json 库。我最终使用了迭代器并循环并复制到一个数组。以上是关于Android Kotlin - 将 jsonArray 转换为 Array<String>的主要内容,如果未能解决你的问题,请参考以下文章
Android/Kotlin:将不同的活动“特征”组合成一个活动
将 Kotlin 运行时库添加到 android 中的 aar
如何将 Kotlin 内联类与 Android 数据绑定集成?