【发布时间】:2013-12-09 01:43:05
【问题描述】:
我正在使用 google 的 GSON 解析库,但我不确定之前是否有人问过这个问题(我确实检查过我能找到什么)但是,我开始了!这是关于 fromJSON 方法以及它如何拒绝将某些类解释为数组。
鉴于以下 JSON 结构:
{"visualization": {
"root": {
"fullname": "CC/dudu",
"name": "dudu",
"type": "String",
"children": [
{
"fullname": "CC/dudu/lulu",
"name": "lulu",
"type": "String"
}
]
},
"traces": {
"messages": [
{
"from": "dudu",
"method": "call()",
"scenario": "#1",
"timestamp": "09-12-2013 00:21:14",
"to": "dudu",
"type": "void",
"violation": "true",
"visible": "true"
}
],
"scenarios": [
{
"name": "testscenario",
"id": "#1",
"description": "testing parsing!"
}
]
}
}}
以及随附的包含类。
public class Response {
private Visualization visualization;
//+getter/setter
}
public class Visualization {
private Component root;
private Map<String, Trace> traces;
//+getter/setter
}
public class Trace {
private ArrayList<Message> messages;
private ArrayList<Scenario> scenarios;
//+getter/setter
}
我收到 GSON 期望的是对象而不是数组的错误(在消息的“[”标记之前)。有谁知道这是为什么?类型(可以在类中看到)是List,所以应该没问题。而且我尝试在数组中添加更多对象,但仍然收到相同的错误消息!为什么 Gson 将 List<TypeA> 类型解释为对象而不是数组?
编辑: 这是代码代码,但这有点毫无意义,因为解析过程会引发异常。我怀疑你会发现任何有用的东西。 “可视化”是一个具有正确 JSON 格式的字符串。
Gson gsonParser = new Gson();
Response r = gsonParser.fromJson(visualization, Response.class);
【问题讨论】:
-
向我们展示尝试解析该 JSON 的代码。
-
请注意,您缺少一个结束
}。 -
我实际上不是,但感谢问题中的错字警告!
-
让我们把所有的牌都放在桌子上。发布您的
Visualization和(我想)Traces课程。我想重现你所看到的。 -
是的,就是这样!以前没有问题,我总是用 JSONLint 检查。但是,这一次我在开始之前有一个右大括号,而最后缺少一个。谢谢,就是这样!!!