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에서 같은 오류가 발생하는 것 같더군요.
주석은 기존에 JsonMapper을 사용해서 처리했던 부분이고 iOS에서는 JsonReader을 가지고 json raw 데이터에 접근해서 처리해줘야 하는 것 같습니다. 일단 이렇게 하면 잘 되긴 합니다.
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 데이터에 접근해서 처리해줘야 하는 것 같습니다. 일단 이렇게 하면 잘 되긴 합니다.
댓글
댓글 쓰기