我有这个代码,我创建了一个对象“person”,在方法“DoJson”中,我声明了这个人并将其返回,我在互联网上看到了一些示例,但我也是这样做但是它不起作用。
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]//Specify return format.
public string DoJson()
{
var pers = new Person();
pers.edad = 1;
pers.nombre = "Name";
return pers;
}
}
public class Person
{
public int edad;
public string nombre;
}
答案 0 :(得分:0)
您需要执行从object到json的转换。请参阅MSDN Docs on the converter -
public string DoJson(){
var pers = new Person();
pers.edad = 1;
pers.nombre = "Name";
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
return oSerializer.Serialize(pers);
}
如果还不存在System.Web
dll,您可能需要添加对{{1}} dll的引用。
答案 1 :(得分:0)
将其更改为此
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data/{id}")]
public Person GetData(string id)
{
// lookup person with the requested id
return new Person()
{
edad= Convert.ToInt32(edad),
nombre = "Leo Messi"
};
}
答案 2 :(得分:0)
在你的情况下,我认为你只需要改变方法DoJson()的返回类型(当你将对象作为字符串返回时)
更改:
public string DoJson()
要:
public Person DoJson()
当然,回归一个人。
这是因为序列化程序需要知道它是一个人,然后开始序列化。