【发布时间】:2021-01-13 07:43:00
【问题描述】:
我需要将一个类发送到 JSON 格式的 API,然后,我需要在目标函数上对其进行反序列化。所以,我在java上使用GSON。首先,我尝试使用以下方法对其进行序列化:
Gson gson = new Gson();
JsonObject userPpfi = new JsonObject();
userPpfi.addProperty("user", "shahab@gmail.com");
userPpfi.addProperty("ppfi", gson.toJson(oppfi));
在目的地得到它之后,我使用下面的代码来获取这些参数。我可以成功获取用户,但是当我需要用 GSON 反序列化第二种方法时,就会出现错误。
JsonObject jelement = new JsonParser().parse(message).getAsJsonObject();
user = jelement.get("user").
ppfi = jelement.get("ppfi").toString();
System.out.println("new ppfi : " + gson.fromJson(ppfi,PPFI.class).getId());
错误是:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 应为 BEGIN_OBJECT 但在第 1 行第 2 列路径 $
那么,如何在目的地使用 PPFI 类? 谢谢。
示例消息
{"user":"shahab@gmail.com","ppfi":"{\"_id\":\"1213\",\"Name\":\"something\",\"item\":5,\"Items\":[{\"Type\":\"pizza\",\"Count\":0},{\"Type\":\"drink\",\"Count\":0},{\"Type\":\"soup\",\"Count\":0}],\"itemtime\":\"Sep 28, 2020, 9:25:31 AM\",\"itemtime2\":\"Sep 28, 2020, 8:25:31 AM\",\"itemtime3\":\"Sep 28, 2020, 10:55:39 AM\",\"itemspec\":[]}"}
我知道这是主要问题(下一行开头的 "):
"{\"_id\":\"1213\",\"Name\":\"something\",\"item\":5,\"Items\":[{\"Type\":\"pizza\",\"Count\":0},{\"Type\":\"drink\",\"Count\":0},{\"Type\":\"soup\",\"Count\":0}],\"itemtime\":\"Sep 28, 2020, 9:25:31 AM\",\"itemtime2\":\"Sep 28, 2020, 8:25:31 AM\",\"itemtime3\":\"Sep 28, 2020, 10:55:39 AM\",\"itemspec\":[]}"
如何将 ppfi 的值转换为 PPFI 类? (这个值是我之前提到的 GSON 生成的)
【问题讨论】:
-
我不明白你为什么将它转换为字符串并再次解析它。您可以直接在
jelement.get("ppfi")上调用fromJson并获取您的对象。 -
@MohammadOmidvar 谢谢,正如你所说,我添加了以下内容:
PPFI myPPFI = gson.fromJson(jelement.get("ppfi"),PPFI.class);但我得到了同样的错误。
标签: json spring-boot spring-mvc gson