SpringBootの@RestControllerの戻り値を確認するサンプルです。
目次 | listを返す場合 / mapを返す場合 |
クラスを返す場合 | |
リストがあるクラスを返す場合 | |
クラスを持つクラスを返す場合 | |
値をセットしない場合 | |
nullの時に項目を出力しない (JsonInclude.Include.NON_NULL) |
listを返す場合
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public List<String> output1() {
List<String> list = new ArrayList<>();
list.add("赤");
list.add("黄");
list.add("青");
return list;
}
}
13行目は、ArrayListを使用しています。
上記コードを実行すると以下のJSONが返ります。
[
"赤",
"黄",
"青"
]
mapを返す場合
package com.example.demo;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public Map<String,String> output1() {
Map<String,String> map1 = new HashMap<>();
map1.put("a", "赤");
map1.put("b", "黄");
map1.put("c", "青");
return map1;
}
}
13行目は、HashMapを使用しています。
上記コードを実行すると以下のJSONが返ります。
{
"a": "赤",
"b": "黄",
"c": "青"
}
クラスを返す場合
データをセットするSyainクラスです。
package com.example.demo;
public class Syain {
private int id;
private String name;
private String romaji;
// setterとgetterは省略
}
Syainクラスにデータをセットして返します。
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public Syain output1() {
Syain s1 = new Syain();
s1.setId(101);
s1.setName("鈴木");
s1.setRomaji("suzuki");
return s1;
}
}
Syainクラスのインスタンスを生成して値をセットし15行目でインスタンスを返します。
上記コードを実行すると以下のJSONが返ります。
{
"id": 101,
"name": "鈴木",
"romaji": "suzuki"
}
JSONのオブジェクトの中に値が生成されます。
リストがあるクラスを返す場合
7行目はリストでUserクラスのインスタンスを格納します。
package com.example.demo;
import java.util.List;
public class AppManager {
String appNo;
List<User> userList;
public String getAppNo() {
return appNo;
}
public List<User> getUserList() {
return userList;
}
public void setAppNo(String appNo) {
this.appNo = appNo;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
リストに格納するUserクラスです。
package com.example.demo;
public class User {
private int id;
private String name;
// setterとgetterは省略
}
JSONを返すコードです。
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public AppManager output1() {
AppManager a1 = new AppManager();
a1.setAppNo("001");
User us1 = new User();
us1.setId(101);
us1.setName("suzuki");
User us2 = new User();
us2.setId(102);
us2.setName("sato");
List<User> list1 = new ArrayList<>();
list1.add(us1);
list1.add(us2);
a1.setUserList(list1);
return a1;
}
}
Userクラスのインスタンスを2つ生成し、23行目でSyainクラスのインスタンスにセットしています。
18行目は、値にnullをセットしています。
17,19行目は、コメントにして項目に値をセットしていません。
上記コードを実行すると以下のJSONが返ります。
{
"appNo": "001",
"userList": [
{
"id": 101,
"name": "suzuki"
},
{
"id": 102,
"name": "sato"
}
]
}
3行目以降はJSONの配列になっています。
クラスを持つクラスを返す場合
7行目はUserクラスのインスタンスを格納します。
package com.example.demo;
public class AppManager {
String appNo;
User user;
public String getAppNo() {
return appNo;
}
public User getUser() {
return user;
}
public void setAppNo(String appNo) {
this.appNo = appNo;
}
public void setUser(User user) {
this.user = user;
}
}
Userクラスです。
package com.example.demo;
public class User {
private int id;
private String name;
// setterとgetterは省略}
}
JSONを返すコードです。
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public AppManager output1() {
AppManager a1 = new AppManager();
a1.setAppNo("001");
User us1 = new User();
us1.setId(101);
us1.setName("suzuki");
a1.setUser(us1);
return a1;
}
}
上記コードを実行すると以下のJSONが返ります。
{
"appNo": "001",
"user": {
"id": 101,
"name": "suzuki"
}
}
3行目以降はJSONのオブジェクトになっています。
値をセットしない場合
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@GetMapping
public AppManager output1() {
AppManager a1 = new AppManager();
a1.setAppNo("001");
User us1 = new User();
// us1.setId(101);
// us1.setName("suzuki");
User us2 = new User();
us2.setId(102);
us2.setName(null);
List<User> list1 = new ArrayList<>();
list1.add(us1);
list1.add(us2);
a1.setUserList(list1);
return a1;
}
}
17,18行目は、コメントにして項目に値をセットしていません。
21行目は、nullをセットしています。
上記コードを実行すると以下のJSONが返ります。
{
"appNo": "001",
"userList": [
{
"id": 0,
"name": null
},
{
"id": 102,
"name": null
}
]
}
5行目は、値が0になっています。
6,10行目は、値がnullになっています。
nullの時に項目を出力しない (JsonInclude.Include.NON_NULL)
@JsonInclude(JsonInclude.Include.NON_NULL) |
package com.example.demo;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
//@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {
private int id;
@JsonInclude(JsonInclude.Include.NON_NULL)
private String name;
private List<String> sikaku;
}
nullの時にJSONとして出力しない項目の上にJsonIncludeのアノテーションを追加します。
6行目のようにクラスの上に付けた場合は、クラスのメンバのどれかがnullの場合その項目は出力されなくなります。
関連の記事