问题
What I want to do is instead of sending Object { d : "{"FileID":"1213"}" }
send "{"FileID":"1213"}"
My current code:
using System;
using System.Web.Mvc;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using System.Web.Script.Serialization;
[ScriptService]
partial class testing_class : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["FileID"] = Request.QueryString["FileID"];
}
public static string returnJSON(object o)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(o);
}
[WebMethod]
[ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]
public static string CurrentFile()
{
var d = new { FileID = "123" };
return returnJSON(d);
}
};
回答1:
Microsoft stack Json serializers are pretty much obsolete and should be avoided at all costs. Instead you should be using (and newer .NET Web stack already is by default) Json.NET implementation.
If you don't have it installed you can do so by running Install-Package Newtonsoft.Json
in your NuGet console window. Also make sure you are using Newtonsoft.Json;
.
[WebMethod]
[ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]
public static string CurrentFile()
{
var d = new { FileID = "123" };
return JsonConvert.SerializeObject(d);
}
来源:https://stackoverflow.com/questions/20530841/webmethod-cant-remove-object-d