我很难将具有可变内容的JSON对象解析为Java对象。
我的JSON如下所示:
"parts": [
[
"text",
"http://www.example.com/"
],
[
"page",
[
"http://www.example.com/",
"\n\t\n\t\t\n\t\t\tSome of the Page Content preview here...",
"",
"/path/to/picture.jpg"
]
],
[
"text",
"Another String here "
]
]
通过一个典型的Json到Java对象转换器运行这段代码是不起作用的,因为它不能映射到一个简单的POJO。
我尝试转换为list
,但不出所料,出现了一个异常:
>>MyObject;
W: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 9563 path $[3]./object.parts[1][1]
Edit:正如注释中所指出的,提供的JSON数据不是以有效的键值对形式提供的。我已经联系了API提供商,他们会解决这个问题的。
在我找到一个处理这个问题的方法之前,我将保留这个问题。
所以在几天后再看这个问题后,我终于找到了一个解决方案,适合我的情况!
而不是像第一次尝试那样尝试将元素解析为字符串
。我现在将数据存储到一个简单的java.lang.object
我的模型现在看起来是这样的:
@SerializedName("parts")
@Expose
private List<List<Object>> parts = new ArrayList<List<Object>>();
当试图访问数据时,我现在检查对象是否为string
类型,如果是这种情况,我将继续,忽略所有数组。
在我的代码中,它如下所示:(在我的示例中,我只需要parts数组中第一个元素的text属性)
List<List<Object>> partList = myParsedObject.getParts();
if (partList.size() > 0) {
if (partList.get(0).size() > 1) {
if (partList.get(0).get(1) instanceof String) {
return partList.get(0).get(1).toString();
}
}
}
我创建了一个简单的RESTendpoint: 我实例化了一个改型: 我的服务: 现在,尝试调用数据: null 但我不知道如何使改型2使用这个。 提前谢了。
如何使用GSON解析这个json? 我的代码: 我的stacktrace com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.rea
和 是我用来获取JSON并对其进行解析的类。但是当我运行第一个时,它会报告以下堆栈跟踪: 它告诉我添加JsonReader。将lenient(true)设置为我的代码,但我的代码不使用JsonReader。那么如何将setLenient(true)添加到代码中? 编辑:添加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