Devolver el objeto JSON desde una página ASP.NET

En mi situación particular, tengo un par de soluciones para mi problema. Quiero saber cuál es más factible. En este caso, también puedo lograr mi objective devolviendo un objeto JSON desde mi código del lado del servidor; sin embargo, no sé cómo se hace y cuál es la mejor manera de hacerlo.

En primer lugar, no necesito una página completa de aspx ya que solo necesito una respuesta devuelta por el código. Entonces, ¿uso servicios web, un controlador o hay alguna otra forma específica de hacerlo?

¿Es esta solución factible? ¿Construyo la cadena JSON usando la clase StringBuilder e inyecto esa cadena en la página aspx de destino? ¿Hay alguna precaución o cosas de las que deba tener conocimiento?

Aprecio tus ideas

Saludos,

Kemal

———— ACTUALIZA! ————

Supongamos que tengo un objeto JSON en mi página userlist.aspx, que luego uso con jQuery …

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

Ahora cuando quiero agregar nuevos elementos de menú de mi página aspx, ¿qué hago? Creo que de esta manera mi pregunta es más específica …

Supongamos que creo una nueva cadena en mi código aspx, como tal "{"value": "Blue"} . ¿Cómo lo inyecto en la lista de elementos ya existente en la página de destino? ¿O este no es el enfoque correcto para este tipo? de la situación? Si no, ¿cómo se puede lograr?

Además, si quería lanzar un evento jQuery cuando se agrega un nuevo elemento a esta lista, ¿cómo se logra esto?

———— ACTUALIZACIÓN 2 el 26 de agosto de 2015 ————

Cuando hice esta pregunta, la forma en que me acercaba al problema estaba en otro aspecto. Ahora soy más competente en el tema y puedo aceptar con mucho gusto la respuesta más votada, ya que el enfoque de esta pregunta claramente no debe incluir el JSON ya existente y generar uno nuevo del código, como también sugiere @DavGarcia .

En su Page_Load, querrá borrar la salida normal y escribir la suya, por ejemplo:

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

Para convertir un objeto C # a JSON, puede usar una biblioteca como Json.NET .

Sin embargo, en lugar de hacer que su página .aspx emita JSON, considere usar un servicio web (asmx) o WCF, que pueden generar JSON.

no hay problema haciéndolo con asp … es más natural hacerlo con MVC, pero también se puede hacer con asp estándar.

El framework MVC tiene todo tipo de clases de ayuda para JSON, si puedes, te sugiero que lo hagas en MVC-love, si no, probablemente puedas simplemente obtener las clases de ayuda JSON utilizadas por MVC y usarlas en el contexto de asp.net.

editar:

Aquí hay un ejemplo de cómo devolver datos JSON con MVC. Esto estaría en tu clase de controlador. Esta es una funcionalidad lista para usar con MVC: cuando organizas un nuevo proyecto de MVC, estas cosas se crean automáticamente, por lo que no es nada especial. Lo único que estoy haciendo es devolver un resultado de acción que sea JSON. El método JSON que estoy llamando es un método en la clase Controlador. Todo esto es muy básico, por defecto, cosas de MVC:

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

Estos datos de retorno podrían llamarse a través de JQuery como una llamada ajax así:

 $.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); }); 

Con las páginas web ASP.NET puede hacer esto en una sola página como un ejemplo GET básico (lo más simple posible que puede funcionar.

 var json = Json.Encode(new { orientation = Cache["orientation"], alerted = Cache["alerted"] as bool?, since = Cache["since"] as DateTime? }); Response.Write(json); 

Si obtienes el código, utiliza algunos como este

  MyCustomObject myObject = new MyCustomObject(); myObject.name='try'; //OBJECT -> JSON var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); string myObjectJson = javaScriptSerializer.Serialize(myObject); //return JSON Response.Clear(); Response.ContentType = "application/json; charset=utf-8"; Response.Write(myObjectJson ); Response.End(); 

Entonces devuelve un objeto json serializado con todos los atributos de MyCustomObject.