Json – Returning JSON object from an ASP.NET page


In my particular situation, I have a couple of solutions to my problem. I want to find out which one is more feasible. In this case, I can also achieve my goal by returning a JSON object from my server side code; however, I do not know how it is done and what the best way of doing it is.

First off, I don't need a full aspx page as I only need a response returned from code. So, do I use web services, a handler, or is there any other specific way to do this?

Is this solution feasible? Do I build the JSON string using the StringBuilder class and inject that string into the target aspx page? Are there any precautions or things that I should be aware of?

I appreciate your ideas.



————UPDATE !————

Suppose I have a JSON object in my userlist.aspx page, which then I use with jQuery…

{"menu": {
  "id": "color1",
  "value": "color",
  "popup": {
    "menuitem": [
      {"value": "Red"},
      {"value": "Green"},
      {"value": "Yellow"}
}} // example taken from the json.org/example page

Now when I want to add a new menu items from my aspx page, what do I do… I think this way my question is more specific…

Lets assume I create a new string in my aspx code, as such "{"value": "Blue"}. How do I inject this into the already existing itemlist in the target page? Or is this not the correct approach to this kind of situation? If not, how else can it be achieved?

Also, if I wanted to fire a jQuery event when a new item is added to this list, how is this achieved?

————UPDATE 2 on 26 August 2015 ————

By the time I asked this question, the way I was approaching the problem was in another aspect. I am now more proficient in the subject and can gladly accept the most voted answer since the approach to this question clearly should not include the already existing JSON and output a new one from the code as @DavGarcia also suggests.

Best Solution

In your Page_Load you will want to clear out the normal output and write your own, for example:

string json = "{\"name\":\"Joe\"}";
Response.ContentType = "application/json; charset=utf-8";

To convert a C# object to JSON you can use a library such as Json.NET.

Instead of getting your .aspx page to output JSON though, consider using a Web Service (asmx) or WCF, both of which can output JSON.