Java1.7を使用したSpringRestfulWebサービスを使用しています
fName、lName、address、currentTimeなどのgetter/setterメソッドを持つjsonマッパークラスがあります
現在、このクラスには以下の属性があります。
@JsonSerialize(include = Inclusion.NON_DEFAULT)
この属性のため、残りのWebサービスはデフォルト値を持つ属性を返しません。
これらの値を保持するには何をする必要がありますか?
インクルージョンをNON_NULLに設定すると機能しますが、currentTimeのみが必要なハートビートAPIで問題が発生します。
同じjasonマッパークラスでcurrentTimeのゲッター/セッターを取得しました。包含をNON_NULLに設定すると、他のすべての属性がデフォルト値で返されます。
RESTFulサービスでこれを処理するにはどうすればよいですか?ハートビートAPIと他のAPIのtime属性を返したいだけですが、すべての属性とデフォルト値が必要です。
どなたかご提案いただければ幸いです!!
更新:これが私のコードです:
Controller.java
@RequestMapping(value = "heartbeat", method = RequestMethod.GET, consumes="application/json")
public ResponseEntity<String> getHeartBeat() throws Exception {
String curr_time = myService.getCurrentTime();
return MyServiceUtil.getResponse(curr_time, HttpStatus.OK);
}
@RequestMapping(value = "info", method = RequestMethod.POST, consumes="application/json")
public ResponseEntity<String> getData(@RequestBody String body) throws Exception {
....
myInfo = myService.getMyInfo(myServiceJson);
return MyServiceUtil.getResponse(myInfo, responseHeader, HttpStatus.OK);
}
MyService.java
@Override
public String getCurrentTime() throws Exception {
String currentDateTime = null;
MyServiceJson json = new MyServiceJson();
ObjectMapper mapper = new ObjectMapper();
try {
Date currDate = new Date(System.currentTimeMillis());
currentDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(currDate);
json.setCurrentDateTime(currentDateTime);
ObjectWriter writer = mapper.writerWithView(Views.HeartBeatAPI.class);
return writer.writeValueAsString(json);
} catch (Exception e) {
throw new Exception("Excpetion in getCurrentTime: ", HttpStatus.BAD_REQUEST);
}
}
@Override
public String getMyInfo(MyServiceJson myServiceJson) throws Exception {
MyServiceJson json = new MyServiceJson();
json.setFirstName("hhh");
json.setLastName("abc");
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(json);
}
Views.java
public class Views {
public static class HeartBeatAPI { }
}
MyServiceJson.java
@JsonSerialize(include = Inclusion.NON_NULL)
public class MyServiceJson {
private int id;
private String firstName;
private String lastName;
@JsonView(Views.HeartBeatAPI.class)
private String currentDateTime;
// Getter/Setter for the above variables here
.....
}
ハートビートAPIを実行しても、デフォルト値である0としてid値を取得しています。