2015-07-21 69 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

相关问题