ドメインレベルのオブジェクトに対して個別のPOJOクラスを作成するのではなく、実行時にJSONレスポンスのキー名を動的にカスタマイズできますか?Jacksonはカスタマイズ可能なキー名でJSONにシリアル化できますか?
Web StartterでSpring Boot 1.5.3を使用しているため、Jacksonの依存関係が含まれています。私はJSONで回答を返しています。通常、キー名をカスタマイズする必要がある場合は、Jackson注釈を使用して個々のPOJOクラスを作成します。例えば、
私は次のコードで@RestController
からこれを返すのです
public class Movies {
private List<String> movies;
public Movies(List<String> movies) {
this.movies = movies;
}
public List<String> getMovies() {
return this.movies;
}
public void setMovies(List<String> movies) {
this.movies = movies;
}
}
:
{ "movies" : [ "Iron Man", "Spiderman", "The Avengers", "Captain America" ] }
:
@RestController
public class MoviesController {
@Service
private MovieService movieService;
@RequestMapping("/movies/list")
public ResponseEntity<Movies> getMovies() {
return new ResponseEntity<Movies>(this.movieService.getMovies(), HttpStatus.OK);
}
}
は、私は戻って、このエンドポイントを呼び出すJSONレスポンスを取得します私はMovies
POJOを作成したくありません。 @JsonProperty
注釈を経由してキー名をハードコーディングとは対照的に、GenericResponse
をインスタンス化しながら、私は何とか私が望む任意のキー名を送信することができます
public class GenericResponse {
@JsonProperty("movies") // <- this needs to be dynamic
private List<String> data;
...
}
...:代わりに、私は一般的な型指定されたPOJOを持っていると思います。それは可能ですか?
これは完全に機能しました。ありがとう! –