亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 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 關注
  • 342 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號