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訪問,您可以在此處訪問
添加回答
舉報
