2009-10-07 43 views
5

我想反序列化一些JSON,我從asmx服務中抓取到對象列表中。所有在JSON類匹配字段的字段中,JSON是回來有效的,但我得到了看似神祕的錯誤:當使用C#/ JavaScriptSerializer反序列化json時,「值不能爲空」錯誤

Value cannot be null. Parameter name: type.

沒有命名類型在我的任何物體的參數。有沒有人見過這個?

這是拋出錯誤的代碼。

System.Web.Script.Serialization.JavaScriptSerializer serr = new System.Web.Script.Serialization.JavaScriptSerializer(); 
List<Rejection> l = serr.Deserialize<List<Rejection>>(json); 

JSON是早些時候宣佈歸來後與外地班裏匹配有效的JSON字符串。您反序列化的名稱的類是否必須與json中的__type屬性匹配?

+0

你能發表一些代碼片段嗎? – 2009-10-07 19:09:04

回答

0

我不知道究竟在何處是你的問題,但嘗試下面的代碼:


string input = "..."; // your asmx data 
JavaScriptSerializer serializer = new JavaScriptSerializer(); 
List<YourCustomClass> novos = new List<YourCustomClass>(
    serializer.Deserialize<YourCustomClass[]>(input))); 
0

我避免的JavaScript串行一起,使用json.net庫解決我的問題。像魅力一樣工作。

3

我剛剛得到這個太 - 我相信,正在初始化它的東西做的串行器沒有一個類型解析:

// The following fails 
var serialiser = new JavaScriptSerializer(); 
MyClass obj = serialiser.Deserialize<MyClass>(input); 

// But the following works fine 
var serialiser = new JavaScriptSerializer(new SimpleTypeResolver()); 
MyClass obj = serialiser.Deserialize<MyClass>(input); 

我發現deserialising JSON是有當我只得到這個錯誤__type屬性存在(僅在使用類型解析器進行序列化時才存在)。如果您的JSON不具有__type屬性,則使用上述任一方法,反序列化似乎可以正常工作。

+3

我與OP有同樣的問題,試着這給了我錯誤'操作是無效的,由於對象的當前狀態。' – 2012-06-20 23:41:12

+0

@碎片我會猜測異常是另一個單獨的問題,你只能看到一次你已經解決了第一個問題。 – Justin 2013-08-01 07:09:59

+0

是的,如果我沒有記錯的話,我通過解析__type出JSON字符串來解決它。 – 2013-08-01 15:35:11

相關問題