SpringBoot @RestControllerの戻り値を確認

SpringBootの@RestControllerの戻り値を確認するサンプルです。

目次 listを返した場合
mapを返した場合
クラスを返す場合
JSONのオブジェクトの中に配列がある+nullの場合
nullの時に項目をJSONとして出力しない

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("/test1")
	public List<String> output1() {
			List<String> list1 = new ArrayList<>();
			list1.add("赤");
			list1.add("黄");
			list1.add("青");
			return list1;
	}
}

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("/test1")
	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;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRomaji() {
		return romaji;
	}
	public void setRomaji(String romaji) {
		this.romaji = romaji;
	}
}

Syainクラスにデータをセットして返します。

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {

	@GetMapping("/test1")
	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のオブジェクトの中に値が生成されます。

JSONのオブジェクトの中に配列がある+nullの場合

7行目はリストでUserクラスのインスタンスを格納します。

package com.example.demo;

import java.util.List;

public class Syain {
	String apiNo;
	List<User> userList;
	
	public String getApiNo() {
		return apiNo;
	}
	public void setApiNo(String apiNo) {
		this.apiNo = apiNo;
	}
	public List<User> getUserList() {
		return userList;
	}
	public void setUserList(List<User> userList) {
		this.userList = userList;
	}
}

Syainクラスに格納するUserクラスです。

package com.example.demo;

import java.util.List;

public class User {
	private  int id;
	private  String name;
	private  List<String> sikaku;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<String> getSikaku() {
		return sikaku;
	}
	public void setSikaku(List<String> sikaku) {
		this.sikaku = sikaku;
	}
}

JSONを返すコードです。

package com.example.demo;

import java.util.Arrays;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {
	@GetMapping("/test1")
	public Syain output1() {
		User u1 = new User();
		u1.setId(101);
		u1.setName("鈴木");
		u1.setSikaku(Arrays.asList("基本", "応用"));
		
		User u2 = new User();
//		u2.setId(102);
		u2.setName(null);
//		u2.setSikaku(Arrays.asList("基本"));
		
		Syain s1 = new Syain();
		s1.setApiNo("001");
		s1.setUserList(Arrays.asList(u1,u2));
		return s1;
	}
}

Userクラスのインスタンスを2つ生成し、23行目でSyainクラスのインスタンスにセットしています。
18行目は、値にnullをセットしています。
17,19行目は、コメントにして項目に値をセットしていません。

上記コードを実行すると以下のJSONが返ります。

{
    "apiNo": "001",
    "userList": [
        {
            "id": 101,
            "name": "鈴木",
            "sikaku": [
                "基本",
                "応用"
            ]
        },
        {
            "id": 0,
            "name": null,
            "sikaku": null
        }
    ]
}

4~16行目は、JSONの配列です。
4~11行目はひとつめの要素で12~16行目はふたつめの要素です。
7~10行目も配列です。
13行目はJavaのデータ型がintのため0になり、14,15行目はnullになります。

nullの時に項目をJSONとして出力しない

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の場合その項目は出力されなくなります。

関連の記事

SpringBoot フォームの値を別画面に渡す

△上に戻る