gpt4 book ai didi

java - 使用 Gson 将 JsonObject 解析为 List>?

转载 作者:行者123 更新时间:2023-11-30 04:35:10 37 4
gpt4 key购买 nike

我正在尝试将 JSON 对象的字符串表示形式解析为 map 列表。json 对象的结构如下:

[
{
"first_name": "fname1",
"last_name": "lname1"
},
{
"first_name": "fname2",
"last_name": "lname2"
}
.
.
.
]

唯一已知的是字符串值(例如“first_name”、“last_name”)仅在运行时,因此我无法创建任何预定义的类(如通常在 fromJson() 方法中使用的类) )。

我尝试创建以下函数(在我在网上看到一些示例之后),但它不起作用:

public List<Map<String, Object>> fromJson(String jsonAsString) {
final JsonElement jsonElement = this.jsonParser.parse(jsonAsString);

List<Map<String, Object>> myList= new ArrayList<Map<String, Object>>();
Type listType = TypeToken.get(myList.getClass()).getType();
myList= (new Gson()).fromJson(jsonElement, listType);

return myList;
}

此函数的结果是一个列表(在上述情况下长度 == 2),但我得到的是 2 个对象,而不是 2 个 map 。

有什么帮助吗?谢谢!

最佳答案

我不太明白你对TypeToken的使用。

TypeToken的要点是通过创建匿名类来捕获参数化类型(例如 List<...> ),该类扩展了由要捕获的类型参数化的泛型父类(super class)型,使用以下语法:

new TypeToken<... type you want to capture ...>() {}.getType()

在您的情况下,应按如下方式使用:

myList = new Gson().fromJson(jsonAsString, 
new TypeToken<List<Map<String, Object>>>() {}.getType());

关于java - 使用 Gson 将 JsonObject 解析为 List<Map<String, Object>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686284/

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