이전 글에서 웹서버 -> 유니티로 데이터를 JSON파일로 받아옴

JSON의 기본문법
1. "키" : 값 형태
2. 객체는 { }, 리스트는 [ ]
그 외에 뭔가 더 있었던 것 같지만 일단 생략
위 JSON파일 구조 분석:
1. 리스트타입
2. 정수형 roomId, 문자열 roomName,문자열 hostAddress, 정수형 currentUserCount
이러한 JSON파일을 유니티의 클래스 형태로 반환하려면 역직렬화를 해야함
[Serializable]
public class Room{
public int roomId;
public string roomName;
public string hostAddress;
public int currentUserCount;
}
클래스 위에 System.Serializable이 붙으면 직렬화/역직렬화 가능
JSON파일의 구조와 똑같이 구성하면 됨
이러면 {"roomId":3,"roomName":"name" . . . .} 형태로 작성될텐데, 우리가 받아온 JSON은 리스트에 담겨있었음
[ {"roomId":3, "roomName":"name" . . . } , {"roomId":4,"roomName":"name" . . .} ]
[Serializable]
public class RoomList
{
public List<Room> rooms = new List<Room>();
}
이렇게 받아온 JSON 파일을 역직렬화하기
RoomList roomList = JsonUtility.FromJson<RoomList>(json);
반대로, 직렬화는 ToJson() (JSON 파일로)
웹서버에서 데이터파일을 JSON형태로 받아왔는데, 그렇다고 유니티에서 웹서버로 데이터를 전송할때 이같은 직렬화 방식 외에도
폼 데이터를 "요청"하는 방식을 사용할 수 있다.
private string baseUrl = "http://localhost:8080/MarioGameServer";
IEnumerator CreateRoom()
{
WWWForm form = new WWWForm();
form.AddField("roomName", roomNameInputField.text);
form.AddField("hostAddr", GetHostIP());
using (UnityWebRequest www = UnityWebRequest.Post(baseUrl + "/createRoom", form)) {
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.LogError("Error: " + www.error);
} else {
Debug.Log("Room created successfully");
Mirror.NetworkManager.singleton.StartHost();
MyRoom.roomName = roomNameInputField.text;
MyRoom.hostAddress = GetHostIP();
SceneManager.LoadScene("Room");
}
}
}
마치 HTML의 <form> 태그안에 정보를 넣어서 전송하는 것과 같은 원리
서블릿은 위 데이터를 파라미터 형태로 받는다.
미러 네트워크로 방장인 경우 StartHost(), 클라이언트인 경우 StartClient()로 방에 참여할 수 있다.
public string hostAddr;
public void JoinRoomBtnPressed()
{
if (string.IsNullOrEmpty(hostAddr)) return;
Mirror.NetworkManager.singleton.networkAddress = hostAddr;
Mirror.NetworkManager.singleton.StartClient();
SceneManager.LoadScene("Room");
}

포스트맨으로 방을 여러번 추가한 결과


test방 생성한 결과:

| [Mirror] #2 유니티 + 웹서버로 DB연동 (0) | 2026.04.05 |
|---|---|
| [Mirror] #1 초기세팅 (0) | 2026.04.03 |