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

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

使用 Gson Java 讀取 Json 格式的問題

使用 Gson Java 讀取 Json 格式的問題

弒天下 2022-11-02 16:01:10
我需要將一個完整的字符串轉換為 Json 格式,挑戰在于在有效負載中有一個嵌套字段,同樣需要將其讀取為 Json。我的 Java 代碼如下所示:首先我讀了字符串:    String payload    ="{\"appId\":\"APP02\",\"employeeId\":\"789-33-3887\",\"name\":\"Paolo Ledner\",\"phonenumber\":\"757.910.0396\",\"beer\":\"Sierra Nevada Bigfoot Barleywine Style Ale\",\"company\":\"Schmidt LLC\",\"address\":\"{\\\"street\\\":\\\"Coralie Trafficway\\\",\\\"zipcode\\\":\\\"12291\\\"}\"}";現在我閱讀了我的第一個 JSON 對象:Gson g = new Gson();JsonElement jelem = g.fromJson(payload,JsonElement.class);JsonObject jobj = jelem.getAsJsonObject();這會正確返回 Json 對象,但我無法從嵌套字段中讀取鍵address,然后我需要讀取該字段的內容,將其轉換為字符串,然后根據我的邏輯應用相同的方法來獲取 Json 格式和閱讀我需要的鑰匙,這是這一步:String address = jobj.get("address").toString().substring(1,jobj.get("address").toString().length()-1);JsonElement jeaddress = g.fromJson(address, JsonElement.class);JsonObject jaddress = jeaddress.getAsJsonObject();System.out.println(jaddress.get("zipcode"));問題:字符串address正確返回,{\"street\":\"Coralie Trafficway\",\"zipcode\":\"12291\"}但是當我嘗試打印 jaddress.zipcode 時出現錯誤:線程“主”com.google.gson.JsonSyntaxException 中的異常:com.google.gson.stream.MalformedJsonException:第 1 行第 2 列路徑 $ 的預期名稱。在 com.google.gson.Gson.fromJson(Gson.java:902) 在 com.google.gson.Gson.fromJson(Gson.java:852) 在 com.google.gson.Gson.fromJson(Gson.java:801 ) 在 bncingestion.kafkaconsumer.validating_payload(kafkaconsumer.java:29) 在 bncingestion.kafkaconsumer.main(kafkaconsumer.java:15) 的 com.google.gson.Gson.fromJson(Gson.java:773) 由:com.google .gson.stream.MalformedJsonException:第 1 行第 2 列路徑 $ 的預期名稱。在 com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) 在 com.google.gson.stream.JsonReader.doPeek(JsonReader.java:513) 在 com.google.gson.stream.JsonReader.hasNext (JsonReader.java:414) 在 com.google.gson.internal。這個轉換的另一個版本沒有刪除"是在這里:String address = jobj.get("address").toString();JsonElement jeaddress = g.fromJson(address, JsonElement.class);JsonObject jaddress = jeaddress.getAsJsonObject();System.out.println(jaddress.get("zipcode"));我很感激任何幫助。謝謝
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

調用jobj.get("address").toString()將值 (a) 格式化JsonElement為 JSON,并且由于該值是字符串,因此它會添加引號并轉義內容。不要那樣做,即不要toString()顯式或隱式調用 ,如果你在追求value。

將行替換為String address = jobj.get("address").getAsString();
也將行替換為System.out.println(jaddress.get("zipcode").getAsString());


查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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