Asp.Net在json中返回自定义对象

时间:2011-11-28 02:03:12

标签: c# javascript asp.net json web-services

我有一个CodeWithMessage类,我想从我的webservice作为json返回。

该类定义为

namespace UserSite //Classes For my site
{
    namespace General
    {
        public class CodeWithMessage
        {
            private int iCode = 0;
            private string sMessage = "";
            public CodeWithMessage(int Code, string Message)
            {
                iCode = Code;
                sMessage = Message;
            }
            public CodeWithMessage()
            {
            }
            public void Message(string lMessage)
            {
                sMessage = lMessage;
            }
            public void Code(int lCode)
            {
                iCode = lCode;
            }
        }

在我的网络服务中

[WebMethod(Description = "Creates A New Blog.")]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public CodeWithMessage AddNewBlog(string sTitle, string sDescription, string sOohrl, int iCategory=30)
    {
        CodeWithMessage CWM;
        CWM = new CodeWithMessage();
        CWM.Message("That url Is In Use");
        CWM.Code(0);
        return CWM;

我发布了正确的值(我截断了函数,但它正在获取它需要的东西并执行) 我回来了

{"d":{"__type":"UserSite.General.CodeWithMessage"}}

我不确定为什么我没有使用值返回实际的json对象,而只是返回类名?我以为asp.net会自动序列化对象?不是吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

您必须使用JavaScriptSerializer的公共属性来序列化您想要的JSONJavaScriptSerializer无法公开方法或私有字段。

namespace UserSite //Classes For my site
{
    namespace General
    {
        public class CodeWithMessage
        {         
            public int Code { get; set; }
            public string Message { get; set; }
        }
     }
}

..............
//usage
CodeWithMessage CWM = new CodeWithMessage();
CWM.Message = "That url Is In Use";
CWM.Code = 0;
return CWM;