我根据编写一个简单的REST API 这个弹簧引导教程.在我的本地开发机器(Ubuntu 15.04和Windows 8.1)上,一切都像魅力一样.
我有一个旧的32位Ubuntu 12.04 LTS服务器,我想要部署我的REST服务.
启动日志没问题,但是一旦我向/ user/{id}端点发送GET请求,我就会收到以下错误:
java.lang.IllegalArgumentException: No converter found for return value of type: class ch.gmazlami.gifty.models.user.User
Run Code Online (Sandbox Code Playgroud)
然后在堆栈跟踪中:
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.LinkedHashMap
Run Code Online (Sandbox Code Playgroud)
整个堆栈跟踪都发布在这里.
我查看了一些引用此错误的答案,但这些似乎并不适用于我的问题,因为我使用的是Spring-Boot,没有任何xml配置.
受影响的控制器是:
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public ResponseEntity<User> getUser(@PathVariable Long id){
try{
return new ResponseEntity<User>(userService.getUserById(id), HttpStatus.OK);
}catch(NoSuchUserException e){
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.这是非常奇怪的,因为完全相同的东西在其他机器上工作.
提前致谢!
我试图用json将json字符串解析回Java对象.但我一直得到上面提到的错误:
Expected BEGIN_OBJECT but was STRING.
Run Code Online (Sandbox Code Playgroud)
我看到这个错误有一些SO问题,但它们似乎都不适用于我的情况.
我的Java代码如下:
Gson gson = new Gson();
Payment p = gson.fromJson(paymentJson, Payment.class);
Run Code Online (Sandbox Code Playgroud)
其中paymentJson是Payment对象的JSON-String,我通过http帖子获取.
用于测试它的Json-String Im如下:
{
"creationDate": "2013-04-10T09:59:45.890+02:00",
"beneficiary": "Heat Hot Sauces",
"amount": 31.54,
"ibanSender": "CH190020600000DEMO303",
"paymentType": "ACCOUNT_TO_ACCOUNT",
"executionDate": "2013-04-10",
"fees": 0,
"ibanReceiver": "CH730020600000DEMO301",
"status": {
"code": "PENDING"
},
"currency": "CHF",
"description": "Sudden Death Sauce",
"id": "25202",
"total": 31.54
Run Code Online (Sandbox Code Playgroud)
}
我用JsonLint检查了JSON的有效性,JsonLint是它的有效json.
我知道另一方通过http向我发送json数据也使用了GSON和同一类"Payment",但是我无法/允许在那里更改代码.
Payment类看起来像这样:
public class Payment {
private String id;
private PaymentType paymentType;
private PaymentCategory paymentCategory;
private String ibanSender;
private LocalDate executionDate;
private DateTime …Run Code Online (Sandbox Code Playgroud)