gpt4 book ai didi

Java 无法反序列化 JSON

转载 作者:行者123 更新时间:2023-11-30 06:21:16 26 4
gpt4 key购买 nike

我在尝试反序列化我相信是有效的 JSON 字符串时遇到错误:

String json = "{\"email\":\"testing@example.com\",\"password\":\"12345\"}";

// FlexJSON deserializer
JSONDeserializer<Signin> deserializer = new JSONDeserializer<Signin>();

// Deserialize into a Signin POJO.
Signin signin = deserializer.deserialize(json);

当我运行这段代码时,我得到:

java.util.HashMap cannot be cast to com.myapp.server.Signin
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.myapp.server.Signin
at com.myapp.server.SigninService.doPost(SigninService.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
... rest of stack trace omitted for brevity

我的 JSON 格式不正确吗? 就好像 JSON 在某种程度上是“错误的”,而 FlexJSON 将其视为 HashMap...

最佳答案

查看 documentation ,问题是你的 json 没有声明它的类。这意味着您明确需要向反序列化器提供一个 Class 对象,因为在 Java 中泛型只是编译时,而不是运行时。

引用文档:

We need to replace the type information we just dropped when we instantiate the deserializer. To do that we'll pass the class we want to use into to flexjson.JSONDeserializer.deserialize(String, Class) method like so:

Hero hero = new JSONDeserializer<Hero>().deserialize( jsonHarvey, Hero.class ); 

所以使用:

Signin signin = deserializer.deserialize(json, Signin.class);

关于Java 无法反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762894/

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