我在 Apache Tomcat 项目开始时就开始编写自己的 Web 应用程序,因此当我编写一个用一小段 JSON 响应某些 GET 或 POST 的 Servlet 时,我的代码看起来与此类似:
package com.stackoverflow.question;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.json.*;
public class SimpleServlet_json extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
JSONObject json = new JSONObject();
try {
json.put("Success", true);
json.put("Name", request.getParameter("name"));
} catch (JSONException e) {}
response.setContentType("application/json");
response.getOutputStream().print(json.toString());
}
}
我的问题是“ASP.net 的等效方法/设计/新项目是什么?”
我一直把这些写成 WebForms,看起来像这样:
首先是(基本上是空的).aspx
文件:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SimpleServlet_json.aspx.cs" Inherits="com.stackoverflow.question.SimpleServlet_json" %>
然后这个.cs
文件:
namespace com.stackoverflow.question
{
public partial class SimpleServlet_json : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var json = new JSONResponse()
{
Success = Request.QueryString["name"] != null,
Name = Request.QueryString["name"]
};
Response.ContentType = "application/json";
Response.Write(JsonConvert.SerializeObject(json));
}
}
[Serializable]
class JSONResponse
{
public string Name { get; set; }
public bool Success { get; set; }
}
}
但我暗自担心我会要求我的 c# 程序员同事采用一种非直观的风格。
这些示例相当做作,实际上它们用作数据库实体的 JSON 表示。例如,URLexample.com/product/1
是 HTML 版本(带有与 URL 关联的 JSP 或 ASPx 页面),example.com/product/1.json
而是 JSON 表示(带有这些类之一)。我是 URL 重写的粉丝。