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 类的对象。
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访问,您可以在此处访问
添加回答
举报