Java gson错误:应为BEGIN\u对象,但为BEGIN\u数组(但我的类型映射是否正确?)
我收到一个gson异常:预期的BEGIN\u对象是BEGIN\u数组。然而,我不清楚为什么,因为我表示的结构是正确的 我的数据:Java gson错误:应为BEGIN\u对象,但为BEGIN\u数组(但我的类型映射是否正确?),java,json,gson,Java,Json,Gson,我收到一个gson异常:预期的BEGIN\u对象是BEGIN\u数组。然而,我不清楚为什么,因为我表示的结构是正确的 我的数据: [ { "aws.amazon.com": 426788 }, { "atsv2-fp.wg1.b.yahoo.com": 141154 }, { "e2svi.x.incapdns.net": 140445 }, { "stackoverflow.
[
{
"aws.amazon.com": 426788
},
{
"atsv2-fp.wg1.b.yahoo.com": 141154
},
{
"e2svi.x.incapdns.net": 140445
},
{
"stackoverflow.com": 87624
},
{
"a-sg03sl05.insnw.net": 56665
}
]
我的gson对象:
public class GroupedTotals {
public List<Map<String, Float>> BSRecvDestDNSName;
}
例外情况:
Parse Error: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
有什么建议吗?如果我将代码和json更改为一个没有封装数组的映射,它可以正常工作,但我需要它来处理上面所写的数组。这是因为
GroupedTotals
不是一个列表,而是一个包含列表的对象
将转换为该类实例的有效json如下所示
{
"BSRecvDestDNSName": [
...
]
}
或者,您可以获取列表的类型
,并直接转换为它。例如,使用原始json,以下代码:
Type type = new TypeToken<List<Map<String, Float>>>() {}.getType();
List<Map<String, Float>> myList = gson.fromJson(output, type);
System.out.println("myList='"+myList+"'");
Type Type=new-TypeToken(){}.getType();
List myList=gson.fromJson(输出,类型);
System.out.println(“myList=”+myList+”);
输出
myList='[{aws.amazon.com=426788.0},{atsv2 fp.wg1.b.yahoo.com=141154.0},{e2svi.x.incapdns.net=140445.0},{stackoverflow.com=87624.0},{a-sg03sl05.insnw.net=56665.0}]
Type type = new TypeToken<List<Map<String, Float>>>() {}.getType();
List<Map<String, Float>> myList = gson.fromJson(output, type);
System.out.println("myList='"+myList+"'");