Flatten

public JsonData Flatten(JsonData jsonData);
public JsonData GetFlattenJSON();
public JsonData FlattenRows();

파라미터

ValueTypeDescription
jsonDataLitjson.JsonData서버에서 수신한 데이터를 담고있는 BackendReturnObject의 Rows() 혹은 GetReturnValuetoJSON()

설명

Flatten()

GetReturnValuetoJSON(), Rows() 함수의 리턴값에 포함된 데이터 타입을 지우고 순수하게 저장된 데이터만 추출하는 방법입니다.

  • 데이터 언마샬을 통해 저장된 데이터를 사용하기 편리하게 변경할 수 있습니다.
  • 숫자형 데이터 중 string으로 저장되어 있는 데이터들을 각각 자료형에 맞게 long 혹은 double로 변환합니다.
  • 언마샬한 데이터는 클래스로 디시리얼라이즈 할 수 있습니다. 디시리얼라이즈 문서를 참고해주세요.
  • Flatten을 수행할 때 함수의 인자값인 JsonData 전체를 순회하게 됩니다.
    일반적인 경우 속도의 문제가 없지만 데이터가 복잡하고 큰 경우 퍼포먼스 이슈가 생길 수 있습니다.

    아래 ReturnValue와 동일한 데이터 100개를 포함한 Rows()를 Flatten 하는 데 약 11ms가 소요되었습니다.

GetFlattenJSON()

GetFlattenJSON()는 Flatten 함수의 인자값으로 GetReturnValuetoJSON()를 넘긴 값을 리턴합니다.

FlattenRows()

FlattenRows()는 Flatten 함수의 인자값으로 Rows()를 넘긴 값을 리턴합니다.

Example

var bro = Backend.Gameinfo.GetPrivateContents("inventory", 100);
if(bro.IsSuccess() == false)
{
    return;
}

// data1과 data2는 동일한 결과 입니다.

var data1 = BackendReturnObject.Flatten(bro.Rows());
var item1 = data1[0];

var data2 = bro.FlattenRows();
var item2 = data2[0];

// data3과 data4는 동일한 결과 입니다.

var data3 = BackendReturnObject.Flatten(bro.GetReturnValuetoJSON());
var item3 = data3["rows"][0];

var data4 = bro.GetFlattenJSON();
var item4 = data4["rows"][0];

// item1 ~ item4는 결과적으로 모두 동일한 값 입니다.

ReturnValue

언마샬 한 후 리턴값 (데이터 타입을 모두 삭제)

{
    {
    "client_date": "2020-11-02T08:11:04.609Z",
    "nickname": "애플망고",
    "def": 75,
    "inDate": "2020-11-02T08:11:04.79Z",
    "atk": 63,
    "option": {
      "opt1": "empty",
      "opt2": "empty"
    },
    "updatedAt": "2020-11-02T08:11:04.786Z",
    "socket": [
      115,
      174,
      257
    ],
    "name": "name39",
    "critical": 2.71338716834476
  }
}

언마샬 하기 전 리턴값 (데이터 타입을 포함)

{
    {
    "client_date": {
      "S": "2020-11-02T08:11:05.631Z"
    },
    "nickname": {
      "S": "애플망고"
    },
    "def": {
      "N": "42"
    },
    "inDate": {
      "S": "2020-11-02T08:11:05.828Z"
    },
    "atk": {
      "N": "55"
    },
    "option": {
      "M": {
        "opt1": {
          "S": "empty"
        },
        "opt2": {
          "S": "empty"
        }
      }
    },
    "updatedAt": {
      "S": "2020-11-02T08:11:05.826Z"
    },
    "socket": {
      "L": [
        {
          "N": "115"
        },
        {
          "N": "170"
        },
        {
          "N": "255"
        }
      ]
    },
    "name": {
      "S": "name47"
    },
    "critical": {
      "N": "2.81677461593262"
    }
  }
}