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});
        }

    }

结果如下:

{"jsonCats":[{"CategoryID":2,"CategoryTitle":"Politika"},{"CategoryID":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":"Nova
kategorija"},{"CategoryID":5,"CategoryTitle":"Testna
kategorija"}]

但是,我需要将结果格式化为:

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

有没有一种简单的方法可以实现这一点,或者我需要对结果进行硬编码?

4

3 回答 3

2

看看Json.Net 库

Json.NET 库使在 .NET 中处理 JavaScript 和 JSON 格式的数据变得简单。使用 JsonReader 和 JsonWriter 快速读取和写入 JSON,或使用 JsonSerializer 通过单个方法调用序列化您的 .NET 对象。

我已在 .net mvc 项目中成功使用它。

于 2010-03-29T19:09:40.257 回答
2

我,

你真的应该看看 json.net lib,我最近在使用 json/jquery 和 mvc 时遇到了类似的困境,并尝试了我自己的手动版本,但在我自己的实现中遇到了许多限制。newton json 库非常简单 - 易于使用且始终在更新。当前版本非常适用于嵌套结构,因此使特定的 json 格式问题成为非问题。

看看吧,15分钟就能搞定。

于 2010-03-30T09:17:10.517 回答
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"}]
于 2010-03-29T22:43:31.093 回答