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

    }

This results with following:

{"jsonCats":[{"CategoryID":2,"CategoryTitle":"Politika"},{"CategoryID":3,"CategoryTitle":"Informatika"},{"CategoryID":4,"CategoryTitle":"Nova
kategorija"},{"CategoryID":5,"CategoryTitle":"Testna
kategorija"}]}

If I use line that is commented and place JsonResult instead of returning string, I get following result:<

[{"CategoryID":2,"CategoryTitle":"Politika"},{"CategoryID":3,"CategoryTitle":"Informatika"},{"CategoryID":4,"CategoryTitle":"Nova
kategorija"},{"CategoryID":5,"CategoryTitle":"Testna
kategorija"}]

But, I need result to be formatted like this:

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

Is there a simple way to accomplish this or I will need to hardcode result?

3 Answers 3

2

Have a look at the Json.Net library

The Json.NET library makes working with JavaScript and JSON formatted data in .NET simple. Quickly read and write JSON using the JsonReader and JsonWriter or serialize your .NET objects with a single method call using the JsonSerializer.

I have successfully used it within a .net mvc project.

Sign up to request clarification or add additional context in comments.

2 Comments

thank you for comment, but I think it will be, for my case, more simple to manually format result
Rippo, for who is this comment attended to?
2

ile,

you really should look at the json.net lib, i was in a similar dilemma recently with json/jquery and mvc and tried my own hand-rolled version but hit the many limitations in my own implemetation. the newton json lib is quite simply a no-brainer - simple to use and always being updated. the current version works fantastically with nested structures, thus making that particular json formatting issue a non-issue.

give it a look, will take you 15 mins to get to grips with.

Comments

1

Try returning it as an Array, Also if you return a JsonResult you can save alot of code (looks like you were attempting to get the formatting you wanted)

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

}

in my test I got a result of

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

1 Comment

thanks, but this result format is not what I need... I need only one pair of curly brackets.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.