2011-11-28 51 views
3

我有一個類CodeWithMessage,我想從我的web服務返回爲json。Asp.Net在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; 
      } 
     } 

在web服務我有

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

我不知道爲什麼我沒有得到bac k是一個實際的帶有值的json對象,而只是類名?我認爲asp.net會自動序列化對象?不是嗎?

在此先感謝

回答

3

你必須使用公共屬性爲JavaScriptSerializer序列化JSON像你想要的。 JavaScriptSerializer不能公開方法和專用字段。

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;