c# .net中的Json对象

本文关键字:对象 Json 中的 net | 更新日期: 2023-09-27 18:09:43

我有一个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对象在服务器端

c# .net中的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到前端?