클라우드 세이브 JSON 업로드 오류에 관한 문의

CloudSave Upload 사용 중 JSON 문자열 저장 시 파싱 오류가 발생합니다.
동일한 JSON 데이터는 RuntimeTable에는 정상적으로 저장 및 로드가 되지만,
CloudSave.Upload를 통해 string 형태로 저장할 경우에만
StatusCode: 400 / ValidationException / Failed to parse the string into JSON 오류가 발생합니다.

string json = Tiny.Json.Encode(userData); // (약 12KB)

Param param = new Param
{
{ “saveData”, json }
};

Backend.CloudSave.Upload(“UserData_Backup”, param, bro =>
{
Debug.Log(bro);
});

RuntimeTable에서는 동일한 JSON 문자열이 정상 처리되는데,

  1. CloudSave에서만 파싱 오류가 발생하는 이유가 데이터의 길이 제한 때문인지 아니면 다른 이유가 있는지 확인 부탁드립니다.
  2. 혹시 CloudSave에서 허용되지 않는 문자열 패턴이 있다면 안내 부탁드립니다.

string b64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));

Param param = new Param
{
{ “saveDataB64”, b64 }
};

Backend.CloudSave.Upload(“UserData_Backup”, param, bro =>
{
Debug.Log(bro); // 성공
});

  1. 같은 데이터가 Base64로는 성공하는데 Base64 인코딩과 같은 우회 방식이 권장되는지 궁금합니다.

감사합니다.

  1. 목록 항목

안녕하세요 개발자님,
클라우드 세이브는 유저 데이터를 JSON 형식으로 저렴하게 저장 이용할 수 있도록 제공하는데 초점이 맞춰진 기능으로 설계되어있습니다, 이에 에러 상세 요청 데이터등의 확인이 불가하여 문의해주신 내용과 관련해 즉시 답변을 드리기 어려움이 있습니다.

에러가 발생하였을 당시 요청데이터 정보를 DM으로 공유해주시면 상세히 확인하여 안내드릴 수 있도록 하겠습니다.

4시 10분 기준, 에디터에서 클라우드 세이브를 시도할 때 아래와 같은 오류가 발생합니다.

[CloudSave] BACKUP save failed: StatusCode : 400
ErrorCode : ValidationException
Message : Failed to parse the string into JSON.

현재 Base64로 압축된 데이터는 업로드가 되지만, JSON RAW는 업로드가 되지 않고 있습니다.

문제의 원인이 무엇인지 확인 후 공유를 부탁드려도 될까요?

아래는 해당 프로세스 처리를 위한 코드입니다.


try
{
// 1) JSON 스냅샷 생성
string json = Tiny.Json.Encode(this);

 // 2) 서버 파서 방어 (제어문자 제거 + NaN/Infinity 제거)
 json = SanitizeJson(json);

 long sc = saveCnt;

 // -------------------------------
 // Index 저장 (숫자만)
 // -------------------------------
 Param indexParam = new Param
 {
     { "UserLevel", (int)userLevel },
     { "Gold",      (long)Gold.typeVal },
     { "Gem",       (long)Gem.typeVal },
     { "RealGem",   (long)PaidGem.typeVal },
     { "SaveCnt",   sc }
 };

 Backend.CloudSave.Upload(CloudSaveIndex, indexParam, broIndex =>
 {
     if (!broIndex.IsSuccess())
     {
         Debug.LogError("[CloudSave] INDEX save failed: " + broIndex);
         return;
     }

     // -------------------------------
     // Backup 저장 (saveData only)
     // -------------------------------
     Param backupParam = new Param
     {
         { "saveData", json }
     };

     Backend.CloudSave.Upload(CloudSaveBackup, backupParam, broBackup =>
     {
         if (broBackup.IsSuccess())
             Debug.Log("[CloudSave] SaveSnapshot success (Index + Backup)");
         else
             Debug.LogError("[CloudSave] BACKUP save failed: " + broBackup);
     });
 });

}
catch (Exception e)
{
Debug.LogException(e);
}

해당 부분 파라미터가 아닌 JSON 파일을 통째로 업로드 시도할 경우 문제가 해결된 것 같습니다.

이 부분은 저희가 조금 더 확인 후에 다른 문제가 생기면 다시 요청드려도 될까요?

좋아요 1

네! 확인 감사합니다. :D