簡體   English   中英

Spring NumberFormatException:無法將類型'java.lang.String'的值轉換為所需的類型'java.lang.Long

[英]Spring NumberFormatException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long

我不確定是否缺少真正的基本知識,但這就是我想做的。

我想對此地址進行其余的API調用:

https:// localhost:8080 / fetchlocation?lat = -26.2041028&lng = 28.0473051&radius = 500

我的休息方法是:

public void fetchlocation(@RequestParam Long lat, @RequestParam Long lng, @RequestParam int radius){ //fetches location}

我收到此錯誤:

“時間戳記”:1442751996949,“狀態”:400,“錯誤”:“錯誤請求”,“異常”:“ org.springframework.beans.TypeMismatchException”,
“ message”:“無法將類型'java.lang.String'的值轉換為所需的類型'java.lang.Long';嵌套的異常是java.lang.NumberFormatException:對於輸入字符串:\\”-26.2041028 \\“”,
“路徑”:“ / fetchlocation”

我猜這是因為在我進行GET調用時,rest API會以字符串而不是Longs的形式接收坐標。 如何確保在調用時其余API獲得Longs而不是String值?

當我更改其余API方法以將Strings作為參數時,我可以輕松地使該方法起作用,但是對於類型檢查,我更喜歡使用Longs。

public void fetchlocation(@RequestParam String lat, @RequestParam String lng, @RequestParam String radius){ //fetches location}

您嘗試轉換為java.lang.Long-26.2041028

您的電話號碼包含. (十進制)。 Long不允許這樣做。 您需要使用java.lang.Double

此外,對於L表示Long ,對於D表示Double精度號,對於D表示成功,然后對D表示成功。 即使不是必需的,它也使代碼更具可讀性。

像是Double -26.2041028D

您需要確保要轉換為Long的字符串包含數字。 這意味着例如這樣的字符串“ 10d”不能轉換為Long,因此是例外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM