Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 使用Gson-Kotlin解析嵌套JSON_Android_Json_Kotlin_Gson - Fatal编程技术网

Android 使用Gson-Kotlin解析嵌套JSON

Android 使用Gson-Kotlin解析嵌套JSON,android,json,kotlin,gson,Android,Json,Kotlin,Gson,我正在尝试将以下json转换为列表数据对象: [ { "type": "PHOTO", "id": "pic1", "title": "Photo 1", "dataMap": {} }, { "type": "SINGLE_CHOICE", "id

我正在尝试将以下json转换为列表数据对象:

[
  {
    "type": "PHOTO",
    "id": "pic1",
    "title": "Photo 1",
    "dataMap": {}
  },
  {
    "type": "SINGLE_CHOICE",
    "id": "choice1",
    "title": "Photo 1 choice",
    "dataMap": {
      "options": [
        "Good",
        "OK",
        "Bad"
      ]
    }
  },
    ---
    ---
]
代码:

我无法从json获取选项列表

我尝试了下面的代码,并且能够在dataMap中检索选项。 这是否可以直接在用户类中检索选项列表

data class User(val type: String, val id: String, val title: String, @SerializedName("dataMap") val options: dataMap)
data class dataMap(val options: List<String>)

选项应该是字符串列表

data class Options(val dataMap: List<String>)
数据类选项(val-dataMap:List)

选项应该是字符串列表

data class Options(val dataMap: List<String>)
数据类选项(val-dataMap:List)
您可以试试这个

val jsonObject = JSONObject(<your JSON string result>);
val jsonArray = jsonObject.getJSONArray();

//use GSON to parse
if (jsonArray != null) {
   val gson = Gson();
   val objResponse = gson.fromJson(jsonArray.toString(), ObjResponse[]::class.java);
   val objResponseList = Arrays.asList(objResponse);
}
val jsonObject=jsonObject();
val jsonArray=jsonObject.getJSONArray();
//使用GSON解析
if(jsonArray!=null){
val gson=gson();
val objResponse=gson.fromJson(jsonArray.toString(),objResponse[]::class.java);
val objResponseList=Arrays.asList(objResponse);
}
您可以试试这个

val jsonObject = JSONObject(<your JSON string result>);
val jsonArray = jsonObject.getJSONArray();

//use GSON to parse
if (jsonArray != null) {
   val gson = Gson();
   val objResponse = gson.fromJson(jsonArray.toString(), ObjResponse[]::class.java);
   val objResponseList = Arrays.asList(objResponse);
}
val jsonObject=jsonObject();
val jsonArray=jsonObject.getJSONArray();
//使用GSON解析
if(jsonArray!=null){
val gson=gson();
val objResponse=gson.fromJson(jsonArray.toString(),objResponse[]::class.java);
val objResponseList=Arrays.asList(objResponse);
}

默认情况下,您的
变量名将引用您的
JSON键。所以你可以试试这个:

data class User(val type: String, val id: String, val title: String, val dataMap: List<Options>)

默认情况下,
变量名
将引用您的
JSON键
。所以你可以试试这个:

data class User(val type: String, val id: String, val title: String, val dataMap: List<Options>)

这并没有回答问题,因为OP专门询问如何使用GSONTS。这并没有回答问题,因为OP专门询问如何使用GSONThanks,Naufal…能够检索选项,但在dataMap对象中。这可以直接在用户类中检索选项列表吗?谢谢,Naufal…可以检索选项,但是在dataMap对象中。这是否可以将选项列表直接检索到用户类中?
data class User(val type: String, val id: String, val title: String, val dataMap: List<Options>)
data class User(val type: String, val id: String, val title: String, @SerializedName("dataMap") val options: List<Options>)