Springbootの@JsonPropertyで指定したキーでJSONを返したい
◆Controller
@RestController
@ResponseBody
public class TestController {
@RequestMapping(path = "/test", method = RequestMethod.GET)
public List<TestDto> test(HttpServletRequest request) {
System.out.println(request.getRequestURL().toString())
TestDtoリストを取得する
return dto;
}
}
◆DTO
@Getter
@Setter
public class TestDto implements Serializable {
private static final long serialVersionUID = -xxxxxxxL;
private String TestName;
private String TestComment;
}
◆JSON
{
{
"testName": "testA",
"testComment": "testAです"
},
{
"testName": "testB",
"testComment": "testBです"
}
}
上記のようにJSONにはなるものの、キーの先頭が小文字になっていたため、以下を参考にDTOを変更しました。
http://blog.soushi.me/entry/2016/12/29/134940
◆DTO
import com.fasterxml.jackson.annotation.JsonProperty;★
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class TestDto implements Serializable {
private static final long serialVersionUID = -xxxxxxxL;
@JsonProperty("TestName")★
private String TestName;
@JsonProperty("TestComment")★
private String TestComment;
}
そうすることでキーは「@JsonProperty」で指定した値で取得できるようになったのですが、
JSON内に先頭が小文字のものと「@JsonProperty」で指定したものの二通りが取得できるようになってしまいました。
「@JsonProperty」の使い方でなにか悪い箇所がありますでしょうか?
◆JSON
{
{
"TestName": "testA",
"TestComment": "testAです",
"testName": "testA",
"testComment": "testAです"
},
{
"TestName": "testB",
"TestComment": "testBです",
"testName": "testB",
"testComment": "testBです"
}
}