我有一个c# .net方法,如下所示
public string jsonTest()
{
List<string> list = new List<string>();
list.Add("aa");
list.Add("bb");
list.Add("cc");
string output = JsonConvert.SerializeObject(list);
return output;
}
在这里,即使我创建一个Json对象使用JsonConvert。我得到一个字符串(因为返回类型是字符串)。
我可以做下面通过使用返回类型JsonResult(或类似的东西)的东西,就像我们可以在MVC?
return Json(new { data = list }, JsonRequestBehavior.AllowGet);
是否可以在asp.net中创建Json数据?
在客户端,我使用ajax调用从jsonTest()获取数据。
$.ajax({
type: 'GET',
url: "test.aspx", //In test.aspx pageload calling jsonTest()
dataType: 'json',
success: function (data) {
alert(data);
},
error: function (data) {
alert("In error");
}
});
当我给dataType: 'json',它会去错误部分(因为ajax期望json数据,但它得到字符串)。这就是为什么我想解析它作为一个json对象在服务器端
净,
string output = JsonConvert.SerializeObject(list);
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(output);
Response.End();
没有所谓的JSON对象。SerializeObject
方法返回一个字符串,因为JSON只不过是一个遵循特定规则的字符串值。
要将JSON返回给浏览器,您需要做的就是:
Response.ContentType = "application/json; charset=utf-8";
Response.Write(jsonTest());
Response.End();
我将假设您正在尝试创建一个WebMethod
供JavaScript XHR调用或类似的使用:
ASP。. NET将自动序列化到JSON的POST
请求仅(使用ASMX或所谓的"页面方法")。WCF和WebAPI不需要POST
方法,但是需要一些配置。
[WebMethod]
public static List<Task> TasksGet(string projectId) {
return MyNamespace.Tasks.GetForProject(projectId);
}
你的JS调用看到的结果会是这样的:
{"d": [{
"__type": "MyNamespace.Task",
"id": 1,
"description": "This is my first task"
}, {
"__type": "MyNamespace.Task",
"id": 2,
"description": "This is my second task"
}, {
....etc etc
}
]}
不需要直接乱搞JsonSerializer类
还要确保您的请求头设置正确:
Content-Accept: application/json;charset=UTF8
Json只是字符串数据。它是如何解释字符串的。它返回一个字符串是正确的。您提到了ASP.Net。你在使用ASP吗?Net webforms和寻找一种方法返回JSON到前端?