如何在Webservice中返回JSON?

Bru*_*oLM 2 asp.net web-services asp.net-3.5

我需要一个Hello World例子......

[WebService(Namespace = "xxxxx")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class Something : System.Web.Services.WebService
{
    public Something() { }

    [WebMethod]
    [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
    public string HelloWorld()
    {
        return "{Message:'hello world'}";
    }
}
Run Code Online (Sandbox Code Playgroud)

因为它会产生错误

{"Message":"Invalid JSON primitive: value.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
Run Code Online (Sandbox Code Playgroud)

怎么了?

编辑:如果我需要返回{Message:'',Type:1}怎么办?

编辑2:最后一个的答案是:我可以返回一个Dictionary<string, string>

Dav*_*ave 5

您只需要从函数返回一个普通(即非JSON)字符串,如:

 return "Hello World"
Run Code Online (Sandbox Code Playgroud)

假设您使用的是.Net 3.5,您的JSON响应将是:

 {"d":"Hello World"}
Run Code Online (Sandbox Code Playgroud)