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 데이터에 접근해서 처리해줘야 하는 것 같습니다. 일단 이렇게 하면 잘 되긴 합니다.
댓글
댓글 쓰기