gpt4 book ai didi

Java gson 错误 : Expected BEGIN_OBJECT but was BEGIN_ARRAY (but my type map is correct? )

转载 作者:行者123 更新时间:2023-11-29 04:27:26 24 4
gpt4 key购买 nike

我收到一个 gson 异常:应为 BEGIN_OBJECT 但实际为 BEGIN_ARRAY。但是,我不清楚为什么,因为我表示的结构是正确的。

我的数据:

[
{
"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;
}

用法:

Gson gson = new Gson();
GroupedTotals groupedTotals = gson.fromJson(output, GroupedTotals.class);

异常(exception):

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": [
...
]
}

或者,您可以获得列表的 Type 并直接转换为它。例如,使用您的原始 json,此代码:

Type type = new TypeToken<List<Map<String, Float>>>() {}.getType();
List<Map<String, Float>> myList = gson.fromJson(output, type);
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}]'

关于Java gson 错误 : Expected BEGIN_OBJECT but was BEGIN_ARRAY (but my type map is correct? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com