2016-09-22 38 views
0

我試圖反序列化使用他們$類型屬性的json。不過,我得到一個錯誤,指出「在JSON指定類型沒有解決。我不知道我在做什麼錯。任何幫助是極大的讚賞。

我的JSON

{ 
movies: 
[ 
    { 
     $type:"RTMoviePageWithSlides", 
     title:"Reservoir Dogs", 
     slides:[ 
      {$type:"RTCharacterPage", title:"Mr. Orange",  img:""}, 
      {$type:"RTCharacterPage", title:"Mr. Blonde",  img:""}, 
      {$type:"RTCharacterPage", title:"Mr. White",  img:""}, 
      {$type:"RTCharacterPage", title:"Mr. Pink",   img:""}, 
      {$type:"RTCharacterPage", title:"Nice Guy Eddie", img:""}, 
     ] 
    } 
    { 
     $type:"RTMoviePageWithSubpages", 
     title:"Jackie Brown", 
     pages:[ 
      {$type:"RTActorPage", title:"Pam Gier",    other_movies:[]}, 
      {$type:"RTActorPage", title:"Samuel L. Jackson", other_movies:[]}, 
      {$type:"RTActorPage", title:"Robert Forester",  other_movies:[]} 
     ] 
    } 
] 
} 

我的課表

using System.Collections; 
using System.Collections.Generic; 

public class RTMovieData { 
    public List<RTMoviePage> movies;  
} 

public class RTMoviePage { 
    public string title; 
} 

public class RTMoviePageWithSlides : RTMoviePage{ 
    public List<RTMoviePage> slides = new List<RTSlidePageData>{}; 
} 

public class RTMoviePageWithSubpages : RTMoviePage{ 
    public List<RTMoviePage> pages = new List<RTPageData>{}; 
} 

public class RTCharacterPage : RTMoviePage 
{ 
    public string img; 
} 

public class RTActorPage : RTMoviePage 
{ 
    public List<string>other_movies; 
} 

反串行化代碼

var settings = new JsonSerializerSettings(); 
    settings.TypeNameHandling = TypeNameHandling.Auto; 

    RTMovieData data = JsonConvert.DeserializeObject<RTMovieData>(jsonString, settings); 

@Programmer提到郵報「的反序列化在Unity C#中使用MiniJSON的JSON作爲這篇文章的副本。但是,這兩個職位根本沒有關係。另一篇文章描述了一位正在使用不同JSON解串器的用戶,並且在獲取數組反序列化時遇到問題。我的問題是特定於使用$ type屬性來幫助反序列化器實例化這篇文章的標題中陳述的子類。

+1

的([在Unity C#中使用MiniJSON JSON的反序列化]可能的複製http://stackoverflow.com/questions/36239705/deserialization-of-json-using-minijson- in-unity-c-sharp) – Programmer

+0

如果在$ type屬性中包含完整的'namespace.classname',會發生什麼? http://stackoverflow.com/a/28125077/424129 –

+0

我沒有使用名稱空間。加一個沒有幫助 – znerolnoht

回答

0

解決方案:在我的JSON中,我需要將「Assembly-CSharp」添加到$ type屬性的值中。

$type:"RTMoviePageWithSlides, Assembly-CSharp" 

$type:"RTCharacterPage, Assembly-CSharp"