我想解码 json 字符串,例如{"username":["emmet"]}
to a Map<String,String[]>
object.
使用以下代码:
String json = "{\"username\":[\"emmet\"]}";
Gson gson = new GsonBuilder().create();
Map<String,String[]> map = new HashMap<>();
map = (Map<String,String[]>)gson.fromJson(json, map.getClass());
String[] val = map.get("username");
System.out.println(val);
出现此异常:
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.String;
at com.company.Main.main(Main.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Gson 已将我的对象解码为Map<String, ArrayList<String>>
对象而不是Map<String,String[]>
目的。我如何强制 gson 将我的对象解码为Array
not ArrayList
?
我在用着gson-2.8.1
.
Gson
皈依者json
数组到javaList
,所以当你尝试获取用户名时String[]
你得到一个ClassCastException
如果你想把它作为String[]
那样使用它:
String json = "{\"username\":[\"emmet\"]}";
Gson gson = new GsonBuilder().create();
Map<String,List<String>> map = new HashMap<>();
map = (Map<String,List<String>>)gson.fromJson(json, map.getClass());
List<String> usernames = map.get("username");
String[] val = usernames.toArray(new String[0]);
System.out.println(val);
这对你有用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)