Unity3D iOS LitJson KeyNotFoundException: The given key was not present in the dictionary

KeyNotFoundException: The given key was not present in the dictionary.

at System.Collections.Generic.Dictionary`2[System.String,LitJson.JsonData].get_Item (System.String key) [0x00000] in <filename unknown>:0
at LitJson.JsonData.get_Item (System.String prop_name) [0x00000] in <filename unknown>:0
at iOSManager.ResultFriendsInfo (System.String jsonFriends) [0x00000] in <filename unknown>:0

(Filename: Line: -1)

 유니티3D iOS 플러그인 작업중 LitJson을 사용하는데 있어서 처음에는 잘되는데 2번째부터 위와 같은 오류가 발생했습니다. 안드로이드에서는 잘 되었는데 구글링을 해보니 다른 분들도 iOS에서 같은 오류가 발생하는 것 같더군요.

 public void ResultFriendsInfo(string jsonFriends)
 {
  JsonReader reader = new JsonReader(jsonFriends);
  
  string strFacebookId = string.Empty;
  string strFacebookName = string.Empty;
  
  while(reader.Read())
  {
   if(reader.Token.ToString() == "PropertyName" && reader.Value.ToString() == "FacebookId")
   {
    reader.Read();
    strFacebookId = reader.Value.ToString();
   }
   if(reader.Token.ToString() == "PropertyName" && reader.Value.ToString() == "Name")
   {
    reader.Read();
    strFacebookName = reader.Value.ToString();
   }
   
   if((strFacebookId != string.Empty) && (strFacebookName != string.Empty))
   {
    Debug.Log("Friend id " + strFacebookId + " Name " + strFacebookName);
    this.dicFriends.Add(strFacebookId, strFacebookName);
    strFacebookId = string.Empty;
    strFacebookName = string.Empty;
   }
  }
  /* 기존 유니티3D 안드로이드 플러그인에서 LitJson 사용하던 방식
  JsonData jData = JsonMapper.ToObject(jsonFriends);
  for (int i = 0 ; i < jData.Count ; i++)
  {
   string strFacebookId = jData[i]["FacebookId"].ToString();
   string strFacebookName = jData[i]["Name"].ToString();
   Debug.Log("Friend id " + strFacebookId + " Name " + strFacebookName);
   this.dicFriends.Add(strFacebookId, strFacebookName);
  }
  */
  SetLog("Friend Count = " + this.dicFriends.Count.ToString());
 }

 주석은 기존에 JsonMapper을 사용해서 처리했던 부분이고 iOS에서는 JsonReader을 가지고 json raw 데이터에 접근해서 처리해줘야 하는 것 같습니다. 일단 이렇게 하면 잘 되긴 합니다.

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

Unity3D 안드로이드 Keystore 생성하기