2012-12-04 77 views
1

的ASP.NET MVC模型我有這樣序列化JSON中

public class Category : BaseFieldsTables 
{ 
     public ICollection<Category> Categories { get; set; } 
     public Category Parent { get; set; } 
     public int? ParentId { get; set; } 
} 

我想要序列模型以JSON的模型,這是我的控制器

var categories = 
      _efCategory.List().ToList(). 
       ToList(). 
       Select(x => new {id = x.Id, title = x.Name, children = x.Parent}); 

     string output = JsonConvert.SerializeObject(categories, Formatting.Indented, 
                new JsonSerializerSettings 
                 { 
                  PreserveReferencesHandling = PreserveReferencesHandling.Objects 
                 }); 

     return Json(output.Replace, JsonRequestBehavior.AllowGet); 

,但我得到這個結果

"[\r\n {\r\n \"$id\": \"1\",\r\n \"id\": 1,\r\n \"title\": \"News\",\r\n \"children\": null\r\n },\r\n {\r\n \"$id\": \"2\",\r\n \"id\": 2,\r\n \"title\": \"2012\",\r\n \"children\": 
{\r\n  \"$id\": \"3\",\r\n  \"Categories\": [\r\n  {\r\n   \"$id\": 

回答

0

這是正常現象。您所看到的只是字符串的轉義版本(可能直接在Visual Studio中)。 \r\n相當於一個換行符,而\"只是一種逃避"的方法。輸出,這應該顯示爲正常。

+0

,但我想用這個樹,我得到了[ { 「的$ id」 這個錯誤未捕獲的數據類型無效: 「1」, 「ID」:2, 「稱號」: 「新聞」, 「children」:null }, –

+0

這意味着您正在錯誤地解析JSON。你將不得不發佈更多的代碼...... JSON本身是正確的。 –

+0

我不知道爲什麼會這樣「$ id」:「13」, 「id」:12, –