Spring NumberFormatException:无法将类型'java.lang.String'的值转换为所需的类型'java.lang.Long

Sim*_*mon 5 java rest spring spring-mvc

我不确定是否缺少真正的基本知识,但这就是我想做的。

我想对此地址进行其余的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}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

“时间戳记”:1442751996949,“状态”:400,“错误”:“错误请求”,“异常”:“ org.springframework.beans.TypeMismatchException”,
“消息”:“无法转换类型'java.lang的值.String'为必需的类型'java.lang.Long';嵌套的异常为java.lang.NumberFormatException:对于输入字符串:\“-26.2041028 \”“,
” path“:” / 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}
Run Code Online (Sandbox Code Playgroud)

Adi*_*ngh 7

您尝试转换为的数字java.lang.Long-26.2041028

您的号码包含一个.(十进制)。这对于Longs是不允许的。您需要使用java.lang.Double.

并且还带有一个成功的数量LLongD用于Double静态初始化。尽管不是必需的,但它使代码更具可读性。

就像,-26.2041028D对于Double