2015-07-21 73 views
0

我從服務器中檢索json文件,然後使用Json反序列化內容。我如何不斷收到此錯誤:無法從源類型轉換爲目標類型Json

Cannot cast from source type to destination type

我按照Minijson腳本的步驟,但仍然出現此錯誤。一些幫助將不勝感激。

void Start() { 


    //creating url 
    image1Request = new WWW("http://development.someurl.com/MoreGames/MoreGames.json"); 
    StartCoroutine(ImageOne(image1Request)); 
} 

IEnumerator ImageOne(WWW www) 
{ 
    //wait until url is loaded 
    yield return www; 
    //load image into texture slot 
    if (www.error == null) 
    { 
     //assigning URLS 
     var dict = Json.Deserialize(www.text) as Dictionary<string,object>; 
     Debug.Log(www.text); 
     Debug.Log("deserialized: " + dict.GetType()); 
     Debug.Log("dict['string']: " + (string)dict["widget"]); 

    } 

    else 
    { 
     Debug.Log("WWW Error: " + www.error); 
    } 
} 
+0

什麼'的Json 。反序列化返回?它似乎不是一個'Dictionary '。 –

回答

0

而不是使用

var dict = Json.Deserialize(www.text) as Dictionary<string,object>;

我會建議你使用下面的代碼段

var dict = new System.Web.Script.Serialization.JavaScriptSerializer(); Dictionary<string, object> dictObject =(Dictionary<string,object>)jsSerializer.DeserializeObject(www.text); 
+0

在Web下找不到'腳本'。 – bru345

+0

你在使用什麼.Net版本? –

+0

Unity5使用.Net 2.0 – bru345

0

你的字典的價值類型爲object的。您正試圖將object類型投射到string。應更正爲:

(object)dict["widget"] 

我不知道你嘗試登錄有什麼,但如果是小部件對象的名稱就應該是這樣的:

Debug.Log("dict['string']: " + ((object)dict["widget"]).ToString()); 
+0

問題是我得到的對象,但沒有它包含的字符串 – bru345

+0

@ bru345什麼是你的類型如果你的對象是一個自定義類型,你必須將它轉換爲這種類型並訪問這些信息,比如 'YourType type =(YourType)dic [「widget」]; Debug.log(type.YourString) ;' – Nimesh

+0

對不起,我不明白你的問題。我的Json包含一個數組,我試圖讀取並以字符串形式保存到字典中。 – bru345

相關問題