如何在c#中传递json对象

本文关键字:json 对象 | 更新日期: 2023-09-27 18:12:39

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

如何在c#中传递json对象

您需要执行从object到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不存在,您可能需要添加一个引用

改成这个

   [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"
                   };
    }

在你的情况下,我认为你只需要改变DoJson()方法的返回类型(在你返回一个对象作为字符串的时刻)

改变:

public string DoJson()

:

public Person DoJson()

当然,返回一个人。

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