C#.net中的Json对象
我有一个C#.net方法,如下所示C#.net中的Json对象,c#,asp.net,json,object,json.net,C#,Asp.net,Json,Object,Json.net,我有一个C#.net方法,如下所示 public string jsonTest() { List<string> list = new List<string>(); list.Add("aa"); list.Add("bb"); list.Add("cc"); string output = JsonConvert.Serializ
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;
}
是否可以在asp.net中创建Json数据
在客户端,我使用ajax调用从jsonTest()获取数据
当我给出数据类型:“json”时,它将转到错误部分(因为ajax需要json数据,但它得到字符串)。这就是为什么我想在服务器端将其解析为json对象。json只是字符串数据。这就是字符串的解释方式。因此,它返回字符串的事实是正确的。你提到了ASP.Net。您是否正在使用ASP.Net webforms并寻找将JSON返回到前端的方法?没有所谓的JSON对象。
SerializeObject
方法返回一个字符串,因为JSON只不过是一个遵循特定规则的字符串值
要将JSON返回到浏览器,只需执行以下操作:
Response.ContentType = "application/json; charset=utf-8";
Response.Write(jsonTest());
Response.End();
如果是ASP.NET
string output = JsonConvert.SerializeObject(list);
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(output);
Response.End();
我假设您正试图创建一个
WebMethod
,供JavaScript XHR调用或类似调用使用:
ASP.NET将仅为POST
请求自动序列化为JSON(使用ASMX或所谓的“页面方法”)。WCF和WebAPI不需要POST
方法,但需要一些配置
[WebMethod]
public static List<Task> TasksGet(string projectId) {
return MyNamespace.Tasks.GetForProject(projectId);
}
无需直接与JsonSerializer类混在一起
还要确保您的请求标题设置正确:
Content-Accept:application/json;charset=UTF8
您希望服务器端使用还是客户端使用它?您试图对结果做什么?如果您正在谈论创建asp webmethod,您将返回字符串类型并使用Json序列化程序转换对象,这应该是一个webmethod?如果是这样的话,只需将返回类型设置为List
,它就会自动序列化为JSON(不是转义的“JSON字符串”),我想你可以说一个注释,如果我没有在ajax中使用数据类型:“JSON”,它就可以正常工作。否则显示警报(“错误”);
string output = JsonConvert.SerializeObject(list);
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(output);
Response.End();
[WebMethod]
public static List<Task> TasksGet(string projectId) {
return MyNamespace.Tasks.GetForProject(projectId);
}
{"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
}
]}