gpt4 book ai didi

java - json(gson)parse 解析时改变数据类型

转载 作者:行者123 更新时间:2023-12-01 06:12:32 25 4
gpt4 key购买 nike

我有一个 json 字符串,看起来像这样:

{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}

当我使用 gson 解析器将其转换为 Map<String,String> map 时。 gson 将类型转换为 Map<String,ArrayList> 。当我尝试使用 System.out.println(map.get("employees").getClass().toString()) 打印类名时。但这会引发异常 - java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String

我的代码看起来像这样

String npv = json_string_provided_above;
Map<String,String> mp = new HashMap<String, String>();
mp = new Gson().fromJson(npv,mp.getClass());
System.out.println(mp.get("employees").getClass().toString());

json 由用户以字符串格式输入(并且它将始终是有效的 json 字符串)。有一点可以肯定,我不能对数据类型做出任何假设。因为它将由用户提供。

所以现在实际上我想要即使用户输入类似字符串数组或对象数组之类的东西。它不应该将它们转换为列表,

有没有办法可以对类型进行硬编码并将它们保存在 Map<String,String> 中。所以在上面的例子中,当我这样做 map.get("employees") 时它应该给我 [{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName":"Jones"}]作为字符串而不是列表。我不知道该怎么做。

感谢您的帮助,

最佳答案

乔恩是对的,只需使用 Map<String, Object>

String npv = json_string_provided_above;
Map<String,Object> mp = new HashMap<String, Object>();
mp = new Gson().fromJson(npv, mp.getClass());
System.out.println(mp.get("employees").toString());

关于java - json(gson)parse 解析时改变数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270754/

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