Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何通过Kotlin中的gson访问嵌套JSON中的值?_Android_Json_Kotlin_Gson - Fatal编程技术网

Android 如何通过Kotlin中的gson访问嵌套JSON中的值?

Android 如何通过Kotlin中的gson访问嵌套JSON中的值?,android,json,kotlin,gson,Android,Json,Kotlin,Gson,我希望在这个JSON中访问flower_id的值。我想通过gson或JSONObject访问它。以下是我的课程: class Json2(val result: Result2) { } class Result2(val status:String, val featured_items: Array<FeaturedItems> , val trending_items:Array<TrendingItems> ) { } class FeaturedItems(va

我希望在这个JSON中访问flower_id的值。我想通过gson或JSONObject访问它。以下是我的课程:

class Json2(val result: Result2) {
}
class Result2(val status:String, val featured_items: Array<FeaturedItems> , val trending_items:Array<TrendingItems> ) {
}
class FeaturedItems(val pic:String, val price:String, val item_name:String, val shop_name:String, val flower_id:String) {
}
class TrendingItems(val pic:String,val price:String, val item_name:String, val shop_name:String, val flower_id:String) {
}
class Json2(val结果:Result2){
}
类结果2(val状态:字符串,val特征项:数组,val趋势项:数组){
}
类特征数据项(val pic:String、val price:String、val项目名称:String、val商店名称:String、val花卉id:String){
}
类别TrendingItems(val pic:String,val price:String,val item_name:String,val shop_name:String,val flower_id:String){
}
以下是我在AsyncHttpResponseHandler()的成功部分所写的内容:

var jsonInfo2=mutableListOf()
var jsonInfo3=mutableListOf()
成功时覆盖乐趣(状态代码:Int,标题:Array?,响应库:ByteArray?){
如果(responseBody!=null){val charset2=Charsets.UTF_8
val json2=String(responseBody,charset2)
val gson2=Gson().newBuilder().serializeNulls().create()
val homescreenresult=gson2.fromJson(json2,genericType())
jsonInfo2.addAll(homescreenresult.result.featured_项)
jsonInfo3.addAll(homescreenresult.result.trending_项)
这是我需要从中访问flower_id的JSON

{“结果”:{“状态”:“1”,“顶部图标”:[{“记录id”:0,“标题”:““状态”:true},{“记录id”:1,“标题”:“类别”,“状态”:true},{“记录id”:2,“标题”:“商店”,“状态”:true},{“记录id”:3,“标题”:“场合”,“状态”:true},{“记录id”:4,“标题”:“提供”,“状态”:true},““横幅”:“banner_id:“ubZFZJaaiEc=”,“skip_button”:false,“bg_color:“button_bg_color:”,“button_text_color:“button_text:”,“screen:”,“shop_id:“208”,“shop_name:“亲爱的可可”,“场合id:”场合名称:“商品id:“9ua2ojMRCWY=”,“section_id:“2”,“banner_text:”youtube视频id:”,{“banner_id:”WrHTW4q7Aro=“,”跳过按钮“:”假“,”背景颜色“:”按钮背景颜色“:”按钮文本“:”按钮文本“:”屏幕“:”店铺id“:”店铺名称“:”场合id“:”97“,”场合名称“:”Gergean“,”项目id“:”章节id“:”2“,”横幅文本“:”youtube视频id“:”,“},{”横幅id“:”DFozQw8G9h0=“,”跳过按钮“:”假“,”背景颜色“:”按钮背景颜色“:”按钮文本“:”屏幕“:”店铺id“:”592“,”店铺名称“:”2u店铺“,”场合id“:”项目id“:”章节id“:”1“,”横幅文本“:”youtube视频id“:”,”章节“:”,”章节“:”,“:”[{”章节id“:-1“,”名称“:”新“,”定制“:”店铺新“,”状态“,”“:true},{”section_id“:1,“name:“Flowers”,“custom_val:“1”,“status”:true},{”section_id“:2,“status”:true},{”section_id“:3,“name:“gives”,“custom_val:“3”,“status:”true}],“featured_items:“{”记录id:“Aizh3yL5+jw=”,“flower id:“3S8bQ9d31yw=”,“product id:“283946,”,“商品名称”:“25%折扣-维罗”,“商店名称”:“花卉及其他”、“货币”:“KWD”,“价格”:26.25,“价格”:“KWD 26.250”,“旧价格”:“KWD 35.000”,“按最小值出售”:1.0,“最大数量”:6,“按单位出售”:“1.0”,“按数量出售”,“当天交货”:真实,“距离”:“0公里”


正如您所看到的,趋势项和特征项都有flower_id。我想访问这两个类数组中的所有flower id,并在单击这两个项时相应地使用它们。

为了使用Gson解析JSON,您需要根据您拥有的flowers JSON结构定义自己的JsonObject类。 这些类可以嵌套。一个“Json类”可以包含另一个作为其字段。例如:
数据类YourJsonClass(var id:Int,var data:List)

然后您需要像这样简单地解析JSON:
Gson().fromJson(yourJsonText,YourJsonClass::class.java)


Gson会根据您编写的结构自动解析所有内容。

具体问题是什么,换句话说,考虑到Gson/JSON LIB有很好的文档记录,什么不起作用?我无法从这个JSON中访问flower\u id的值。我正在使用model class方法访问列表中没有的其他键的值。我不知道如何访问数组列表中的键的值。例如:“featured_items”有数组列表。从中我想要“flower_id”的值",将其存储在一个变量中,因为我需要该值将其传递给API,API将提供进一步的结果。请阅读-总结是,这不是一种理想的方式来解决志愿者问题,可能会对获得答案产生反作用。请不要将此添加到您的问题中。我已经尝试过了。val charset4=Charsets.UTF_8 val json4=String(responseBody,charset4)val gson4=Gson().newBuilder().serializeNulls().create()val itemscreenresult=gson4.fromJson(json4,genericType())jsonInfo6.addAll(itemscreenresult.result.data)但我需要Json4来访问其他值。因此,我无法访问其他类的值。您能提供帮助吗?您说您尝试了此操作,但我看不到您的类。以下是给您的指南:我已经编辑了代码并显示了这些类。
var jsonInfo2 = mutableListOf<FeaturedItems>()
    var jsonInfo3 = mutableListOf<TrendingItems>()

                override fun onSuccess(statusCode: Int, headers: Array<out Header>?, responseBody: ByteArray?) {

                    if (responseBody != null) { val charset2 = Charsets.UTF_8

                        val json2 = String(responseBody, charset2)
                        val gson2 = Gson().newBuilder().serializeNulls().create()

                        val homescreenresult = gson2.fromJson<Json2>(json2, genericType<Json2>())

                        jsonInfo2.addAll(homescreenresult.result.featured_items)

                        jsonInfo3.addAll(homescreenresult.result.trending_items)