Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Returning JSON object from an ASP.NET page

Tags:

json

asp.net

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.

Regards,

Kemal

------------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.

like image 764
Subliminal Hash Avatar asked Mar 11 '10 06:03

Subliminal Hash


People also ask

How do I return JSON in Web API net core?

To return data in a specific format from a controller that inherits from the Controller base class, use the built-in helper method Json to return JSON and Content for plain text. Your action method should return either the specific result type (for instance, JsonResult ) or IActionResult .

Can we return JSON through view result?

@Zach Yes, It's possible.


2 Answers

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

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

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.

like image 110
DavGarcia Avatar answered Sep 18 '22 22:09

DavGarcia


no problem doing it with asp.... it's most natural to do so with MVC, but can be done with standard asp as well.

The MVC framework has all sorts of helper classes for JSON, if you can, I'd suggest sussing in some MVC-love, if not, you can probably easily just get the JSON helper classes used by MVC in and use them in the context of asp.net.

edit:

here's an example of how to return JSON data with MVC. This would be in your controller class. This is out of the box functionality with MVC--when you crate a new MVC project this stuff gets auto-created so it's nothing special. The only thing that I"m doing is returning an actionResult that is JSON. The JSON method I'm calling is a method on the Controller class. This is all very basic, default MVC stuff:

public ActionResult GetData() {     var data = new { Name="kevin", Age=40 };     return Json(data, JsonRequestBehavior.AllowGet); } 

This return data could be called via JQuery as an ajax call thusly:

$.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); }); 
like image 44
Kevin Won Avatar answered Sep 17 '22 22:09

Kevin Won