当前位置: 首页 > 知识库问答 >
问题:

Gson解析Json

魏岳
2023-03-14

如何使用GSON解析这个json?

[
 [
   456239452,180279471,"fsdgdfgdfg","T",
   "M",244,0,0,"",0,82,"","[]","fgfdgdfg",10
 ],
 [
   456239451,180279471,"9wnntiu5vu9mBeDiBej4swfcztjOS4nJe",
   "R","s",253,0,0,"",0,82,"","[]","cf46","g",14
 ]
]

我的代码:

data class Data(val list: List<List<String>>)

Gson().fromJson(json, Data::class.java).let {
    it.list.forEach {
        it.forEach {
            println(it)
        }
    }
}

我的stacktrace

com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.read(ReflecteTypeAdapterFactory.java:224)com.google.gson.Gson.fromJson(Gson.java:888)com.google.gson.Gson.fromJson(Gson.java:853)com.google.gson.Gson.fromJson(Gson.java:802)com.google.gson.Gson.fromJson(Gson.java:774)在dchistov.vkmusic.music.MusicFrach$initAudio$1.doResume(MusicFragment.kt:58)在kotlin. coroutins.实验. html" target="_blank">jvm.内部。在kotlinx. coroutins.实验中的CoroutineInpl.简历(CoroutineInpl. kt: 54)。在kotlinx. coroutins.实验中调度任务$DefaultInps. run(Dispatched. kt: 161)。在java. utils. con电流中调度继续运行(Dispatch. kt: 25)。在java. utils. con电流中的ForkJoinask$RunnableExecteAction. exec(ForkJoinTask. java: 1412)。在java. utili. con电流中的ForkJoinTask. doExec(ForkJoinTask. java: 285)。在java.

共有1个答案

单于山
2023-03-14

看起来你唯一能做的事情就是把它解析为List

要实现这一点,你应该做以下事情

import java.lang.reflect.Type
import com.google.gson.reflect.TypeToken

Type listType = object: TypeToken<List<List<Any>>>(){}.type
List<List<Any>> list = Gson().fromJson(jsonArray, listType)

 类似资料:
  • 和 是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪: 它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中? 编辑:添加API响应(格式化):

  • 我很难将具有可变内容的JSON对象解析为Java对象。 我的JSON如下所示: 通过一个典型的Json到Java对象转换器运行这段代码是不起作用的,因为它不能映射到一个简单的POJO。 我尝试转换为,但不出所料,出现了一个异常: Edit:正如注释中所指出的,提供的JSON数据不是以有效的键值对形式提供的。我已经联系了API提供商,他们会解决这个问题的。 在我找到一个处理这个问题的方法之前,我将保

  • 问题内容: 我在解析从javascript获取的JSON时遇到问题。JSON的格式是这样的: 到目前为止,我已经能够做到这一点: 但是我现在还需要用这些位置创建一个类。我一直在上课,因为我先尝试打印输出,但是我无法进一步细分它。我收到此错误消息: java.lang.IllegalStateException:这不是JSON数组。 我的代码是这样的: 我也尝试过这种方式: 在这种情况下,我得到:

  • 我正在使用凌空OkHttp从服务器获取一些数据。 响应是一个包含JSON的字符串,我想使用GSON/POJO解析它。 我得到错误: 预期BEGIN_OBJECT,但在第1行第1列路径$上是STRING 尝试解析时。 原因:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1列路径$ com.google.gson.stream.JsonRead

  • val homeFeed=gson.fromjson(正文,列表::class.java) 我的代码: