테이블에 새로운 데이터 추가했을 때 발생하는 오류

새로운 컨텐츠를 만들기 위해 int형 데이터를 이미 만들어진 테이블에
추가해 사용하고 싶은데, 문제가 발생해서 질문드립니다.

현재 이미 존재하는 테이블에 새로운 데이터를 만들었을 때
이미 테이블 안에 생성돼있는 유저들은 해당 데이터가 공란(null)로 만들어지는데

Backend.GameData.GetMyData(“users”, new Where(), userDataCallBack => // 생략
var json = BackendReturnObject.Flatten(userDataCallBack.Rows());
var item = LitJson.JsonMapper.ToObject< GameUser>(json[i].ToJson());
Managers.User.GameUser = item;

위와같은 방식으로 데이터를 GameUser 클래스로 변환하는 과정에서
null 데이터를 int로 변환에 실패합니다.
혹시 다른 방식으로 데이터를 받아올 수 있는 방법이 있을까요?

안녕하세요 개발자님.

만약 Json에서 자동으로 디시얼라이즈가 되지 않을 경우 수동으로 Json에 접근해서 데이터를 받을 수 있도록 따로 로직을 구성해야합니다.

Backend.GameData.GetMyData(“users”, new Where(), userDataCallBack => // 생략

var json = BackendReturnObject.Flatten(userDataCallBack.Rows());

Managers.User.GameUser.hp = Int32.Parse(json[0]["hp"].ToString());
Managers.User.GameUser.mp = Int32.Parse(json[0]["mp"].ToString());
Managers.User.GameUser.atk = Int32.Parse(json[0]["atk"].ToString());

만약 스키마 테이블 설정으로 인해 자동으로 생성된 컬럼값이라면 기본값을 숫자 0등으로 초기화되도록 설정하여 NULL이 발생하지 않도록 구성하는 것을 추천드립니다.

답변 감사합니다.
추가로 질문 드릴게 있는데

혹시 테이블에 있는 데이터를 일괄적으로 한번에 원하는 값으로 변경하는 방법이 있나요?
예를들어 유저 100명의 Hp 데이터를 일괄적으로 0으로 변경할 수 있는지 궁금합니다.

해당 기능은 제공하고 있지 않는 점 참고해주시면 감사하겠습니다.

안녕하세요. 추가적인 질문있습니다.
위에 알려주신대로 테이블 데이터를 불러왔을 때

Backend.GameData.GetMyData(“users”, new Where(), userDataCallBack => // 생략
var json = BackendReturnObject.Flatten(userDataCallBack.Rows());
Managers.User.GameUser.Gold = double.Parse(json[0][“Gold”].ToString());

이렇게 하면 처음에는 문제없이 잘 되다가 데이터가 커지면
JsonException : Can’t assign value ‘2230304361(현재 데이터)’ (type System.Int64) to type System.Double 이라는 오류가 나면서
파싱에 실패합니다.
클래스 변수도 double형으로 선언했는데 어떤 부분이 잘못됐는지 궁굼합니다.

안녕하세요 개발자님

뒤끝의 경우, LitJson을 기반으로 json이 사용되지만 해당 에러 확인 시 유니티의 기본 Json이 사용되는 것으로 보입니다.

스크립트 상단에 using LitJson; 혹은 var json을 LitJson.JsonData로 변경하여 사용해주시기 바랍니다.