1

我有这段代码,我创建了一个对象“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;
}
4

3 回答 3

0

在您的情况下,我认为您只需要更改方法 DoJson() 的返回类型(此时您将对象作为字符串返回)

改变:

public string DoJson()

至:

public Person DoJson()

然后当然是回一个人。

这是因为序列化器需要知道它是一个人然后开始序列化。

于 2013-05-07T10:56:23.263 回答
0

您需要执行从对象到 json 的转换。请参阅转换器上的 MSDN 文档-

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 不存在,您可能需要添加对 dll 的引用。

于 2013-05-07T10:48:37.423 回答
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"
                   };
    }
于 2013-05-07T10:53:55.663 回答