딕셔너리 데이터를 어떻게 받나요??

에러가 발생한 경우 아래 정보를 모두 제공해주시면 보다 정확한 답변이 가능합니다!

  • 프로젝트 명 : prison
  • SDK 버전 : 5.4.5
  • 에러 코드 :
  • 스테이터스 코드 :
  • 에러메시지 :

이렇게 데이터를 넣었습니다.

    Param param = new Param();  

    Dictionary<string, int> dic1 = new Dictionary<string, int>  
    {
        {"now_total_damage_int", data2.now_total_damage_int},
        {"now_special_food_day_int", data2.now_special_food_day_int},
        {"now_drug_in_day_int", data2.now_drug_in_day_int}
    };

    Dictionary<string, float> dic2 = new Dictionary<string, float>
    {
        {"now_special_food_co_f1", data2.now_special_food_co_f1},
        {"now_special_food_co_f2", data2.now_special_food_co_f2}
    };

    Dictionary<string, byte> dic3 = new Dictionary<string, byte>
    {
        {"now_who_by", data2.now_who_by},
        {"now_week_by", data2.now_week_by},
        {"now_supermarket_what_item_by", data2.now_supermarket_what_item_by}
    };


    short now_jang_short = data2.now_jang_short;

    bool now_special_food_co_bool = data2.now_special_food_co_bool;


    param.Add("dic1", dic1);
    param.Add("dic2", dic2);
    param.Add("dic3", dic3);
    param.Add("now_jang_short", now_jang_short);
    param.Add("now_special_food_co_bool", now_special_food_co_bool);

딕셔너리 3개랑 숏이랑 불리안이랑 총 5개 타입으로 서버에 넣었는데
이제 이걸 꺼내와서 받아야 되거든요

    Where where = new Where();
    BackendReturnObject bro = Backend.GameData.Get("Data", where);   

    if (bro.Rows().Count > 0)  
    {
        var rows = BackendReturnObject.Flatten(bro.Rows());



        foreach (var row in bro.Rows())
        {

            var dic = row[""];


            foreach(var data in dic)
            {
                int now_my_tool1 = 

            }

        }

도저히 모르겠습니다.
ㅠ ㅠ

좀 자세하게 알려주세요~~~~

어떻게 딕셔너리랑 다른 값들을 받아올 수 있나요?

안녕하세요 개발자님.

아래 코드와 같이 딕셔너리 데이터를 불러올 수 있습니다.
BackendReturnObject bro = Backend.GameData.GetMyData(“Data”, new Where());

if (bro.Rows().Count > 0)  
{
    var rows = BackendReturnObject.Flatten(bro.Rows());

    foreach (JsoData row in bro.Rows())
    {
       //방법 1
        var dic1 = row["dic1"]["now_total_damage_int"].ToString();
        var dic2 = row["dic1"]["now_special_food_day_int"].ToString();
        var dic3 = row["dic1"]["now_drug_in_day_int"].ToString();

        var dic4 = row["dic2"]["now_total_damage_int"].ToString();
        var dic5 = row["dic2"]["now_special_food_day_int"].ToString();

        //방법2
        foreach (var li in row["dic1"].Keys)
        {
            Debug.Log(row["dic1"][li].ToString());
            dic1.Add(li.ToString(), row["dic1"][li].ToString());

        }

        foreach (var li in row["dic2"].Keys)
        {
            Debug.Log(row["dic2"][li].ToString());
            dic2.Add(li.ToString(), row["dic2"][li].ToString());
        }
    }

또한 클래스 그대로 받아올 경우 해당 방법처럼 Json을 클래스로 변경하여 이용가능하니 참고해주시면 감사하겠습니다.

KEY가 없다고 뜨는게 뭐가 잘못 된걸 까요?

    BackendReturnObject bro = Backend.GameData.GetMyData("Data", new Where());

    if (bro.Rows().Count > 0)
    {
        foreach (JsonData row in bro.Rows())
        {

            //방법 1
            **var dic1 = row["dic1"]["now_my_tool1"].ToString();**   //에러 걸린곳
            var dic2 = row["dic1"]["now_my_tool2"].ToString();
            var dic3 = row["dic1"]["now_my_tool3"].ToString();

            var dic4 = row["dic2"]["now_eat_value"].ToString();
            var dic5 = row["dic2"]["now_tire_value"].ToString();

        }
    }

2021-08-26 12;40;54

로그인 됐고, 해당 row가 로그인된 계정게 맞습니다. ㅠ

도와주세요 ~ ㅠ

Flatten이 되지 않은 채로 접근되어 [“M”] 또는 [“S”]에 데이터에 막힌것으로 보입니다.
위와 같이 코드를 수정해주시면 감사하겠습니다.

download

좋아요 2

download

좋아요 2