2010-03-29 100 views
1
public class JsonCategoriesDisplay 
    { 
     public JsonCategoriesDisplay() { } 

     public int CategoryID { set; get; } 
     public string CategoryTitle { set; get; } 
    } 

    public class ArticleCategoryRepository 
    { 
     private DB db = new DB(); 

     public IQueryable<JsonCategoriesDisplay> JsonFindAllCategories() 
     { 
      var result = from c in db.ArticleCategories       
         select new JsonCategoriesDisplay 
         { 
          CategoryID = c.CategoryID, 
          CategoryTitle = c.Title        
         }; 

      return result; 
     } 

      .... 
    } 




public class ArticleController : Controller 
    { 
     ArticleRepository articleRepository = new ArticleRepository(); 
     ArticleCategoryRepository articleCategoryRepository = new ArticleCategoryRepository(); 


     public string Categories() 
     { 
      var jsonCats = articleCategoryRepository.JsonFindAllCategories().ToList(); 

      //return Json(jsonCats, JsonRequestBehavior.AllowGet); 

      return new JavaScriptSerializer().Serialize(new { jsonCats}); 
     } 

    } 

這導致與以下:
asp.net MVC JSON結果格式

{ 「jsonCats」:[{ 「類別ID」:2 「CategoryTitle」: 「政治報」},{「類別ID 「:3,」CategoryTitle「:」Informatika「},{」CategoryID「:4,」CategoryTitle「:」Nova kategorija「},{」CategoryID「:5,」CategoryTitle「:」Testna kategorija「}]
如果我使用註釋的行並放置JsonResult而不是返回字符串,我得到以下結果:

[{「CategoryID」:2,「CategoryTitle」:「Politika」},{「CategoryID」:3,「CategoryTitle」:「Informatika」},{「CategoryID」:4,「CategoryTitle」 kategorija 「},{」 類別ID 「:5,」 CategoryTitle 「:」 Testna kategorija「}]

但是,我需要結果爲格式如下:

{」 2':'Politika','3':'Informatika','4':'Nova kateorija','5':'Testna kategorija'}


有沒有簡單的方法來完成這個或我需要硬編碼的結果?
在此先感謝!

回答

2

看一看在Json.Net library

的Json.NET庫使工作 JavaScript和JSON格式在.NET簡單 數據。快速閱讀並使用JsonReader和 編寫JSON,或使用JsonSerializer將您的.NET 對象與單個方法調用 一起序列化。

我已經成功地在.net mvc項目中使用它。

+0

感謝您的評論,但我認爲這將是,對我來說,更簡單的手動格式結果 – 2010-03-29 20:32:59

+0

爲什麼投下投票?沒有一個解釋只是懦弱...... – Rippo 2011-12-07 20:59:11

+0

Rippo,這是誰的評論參加? – 2011-12-08 10:31:38

1

,請返回它作爲一個陣列,另外,如果你返回JsonResult你可以節省很多的代碼(貌似你試圖獲得你想要的格式)

public class ArticleController : Controller 
    { 
     ArticleRepository articleRepository = new ArticleRepository(); 
     ArticleCategoryRepository articleCategoryRepository = new ArticleCategoryRepository(); 

    public JsonResult Categories() 
    { 
     var jsonCats = articleCategoryRepository.JsonFindAllCategories().ToArray(); 

     return Json(jsonCats, JsonRequestBehavior.AllowGet); 
    } 

} 
在我的測試

我得到的結果

[{"Id":1,"Name":"Cat 1"},{"Id":2,"Name":"Cat 2"}] 
+0

謝謝,但這種結果格式不是我所需要的...我只需要一對大括號。 – 2010-03-31 10:11:24

2

ILE的

你真的應該看看json.net lib下,我是在一個類似的窘境最近使用JSON/jQuery和MVC和嘗試我自己的手卷版本但是在我自己的實現中遇到了很多限制。牛頓JSON庫是一個簡單易用而且總是被更新的簡單工具。當前版本非常適合嵌套結構,從而使得特定的json格式問題不成問題。

給它一下,會帶你15分鐘去掌握。

+0

謝謝,我會試試看 – 2010-03-31 10:10:34