为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 JsonParser 使用 com.google.gson API 在返回值中给出双引号

为什么 JsonParser 使用 com.google.gson API 在返回值中给出双引号

慕娘9325324 2023-07-28 15:21:54
我目前正在使用com.google.gson api(使用gson-2.8.5版本)的JsonObject和JsonParser来解析和读取输入JSON的值。我有 JSON 归档,例如 smaple,"resultCode":"SUCCESS",当我尝试从 json 读取相同的值时,它给出的结果为""SUCCESS"".我正在阅读的每个值都带有双“”,不知道为什么?您可以参考我的调试屏幕的下面屏幕。我是 Json 和解析器的新手,这是默认行为吗?我期待"SUCCESS","S"不像 我 在下图中突出显示的"00000000"那样""SUCCESS""。""S""""00000000""请分享我们如何获得字符串的绝对值而不使用“””双引号字符串的任何想法,它会导致我的字符串比较失败。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

JsonParser将您的 json 解析为JsonElement结构。您看到的行为是正常的,因为您正在使用toString的方法JsonElement。要实现您的目标,只需使用JsonElement::getAsString方法:

String resultCode = jo.get("response").getAsJsonObject().get("body").getAsJsonObject().get("resultInfo").getAsJsonObject().get("resultCode").getAsString();

这给出了SUCCESS而不是"SUCCESS"

请注意,这JsonElement是一个抽象类,扩展该类的类将覆盖这些辅助getAs...方法。在你的情况下JsonPrimitive::getAsString将被调用。

您还可以为 json 创建一个 POJO 类,并用于Gson::fromJson将 json 解析为 POJO 类的对象。


查看完整回答
反对 回复 2023-07-28
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

根据 @Michalk 的输入:我知道读取 JSON 数据的简单方法是使用 Gson::fromJson 并为 json 创建 POJO 类。


现在我有名为:CreateOrderJSONResponse 的 POJO 类


Gson::fromJson

样本 :


Gson gson = new Gson();

CreateOrderJSONResponse responseJson = gson.fromJson(inputJSON, CreateOrderJSONResponse.class);

访问数据:


    String resultCodeText =   responseJson.getResponse().getBody().getResultInfo().getResultCode();

    String resultCodeId =     responseJson.getResponse().getBody().getResultInfo().getResultCodeId();

    String resultStatus =     responseJson.getResponse().getBody().getResultInfo().getResultStatus();

    String checkoutUrl =      responseJson.getResponse().getBody().getCheckoutUrl();

与使用以下Gson::fromJson示例代码直接访问文件相比,上面的示例运行顺利,并且看起来很整洁:


 JsonObject jo = parser.parse(inputJSON).getAsJsonObject();


 String resultCodeText = jo.get("response").getAsJsonObject().get("body").getAsJsonObject().get("resultInfo").getAsJsonObject().getAsJsonPrimitive("resultCode").getAsString();

 String resultCodeId = jo.get("response").getAsJsonObject().get("body").getAsJsonObject().get("resultInfo").getAsJsonObject().getAsJsonPrimitive("resultCodeId").getAsString();

 String resultStatus = jo.get("response").getAsJsonObject().get("body").getAsJsonObject().get("resultInfo").getAsJsonObject().getAsJsonPrimitive("resultStatus").getAsString();

 String checkoutUrl = jo.get("response").getAsJsonObject().get("body").getAsJsonObject().getAsJsonPrimitive("checkoutUrl").getAsString();

注意:我找到了 JSON 或 JAVA、SCALA、POJO 生成器工具的链接作为GitHub访问,您可以在此处访问


查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 238 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信