2010-08-30 68 views
1

我已經想要將數據插入數據庫而無需回發的場景。大約有12到13個字段需要插入。我從實際上是Json對象的客戶端傳遞DTO。現在,我面臨的問題是如何將我在webservice中獲得的Json對象轉換爲「類」(在我的例子中,類名是User)對象。如何將Json對象轉換爲web服務中的cutom類對象?

<script type="text/javascript" language="javascript"> 

    $('#<%= btnSaveInfo.ClientID %>').click(function() 
    { 
     // Initialize the object, before adding data to it. 
     // { } is declarative shorthand for new Object(). 
     var User = { }; 
     User.FirstName = $('#<%= txtFirstName.ClientID%>').val(); 
     User.MiddleName = $('#<%= txtMiddleName.ClientID%>').val(); 
     User.LastName = $('#<%=txtLastName.ClientID %>').val(); 
     User.Gender = $('table#<%= rdbGenderType.ClientID %> input:radio:checked').val(); 
     User.DateCreated = Date.UTC(); 
     User.Description = $('#<%= txtDescription.ClientID%>').val(); 
     User.DOB = $('#<%= txtDOB.ClientID %>').val(); 
     User.Location=$('#<%= txtLocation.ClientID %>').val(); 
     var DTO = {'User' : User}; 
     var path = 'MyWebService.asmx/AddNewUser'; 
     $.ajax 
     ({ 
      type: "POST", 
      url: path,    
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: JSON.stringify(DTO), 
      async:false, 
      success: function(msg) 
      {      

      } 
     }); 
    }); 

,你可以看到我傳遞的數據作爲數據:JSON.stringify(DTO),。現在我該如何將這個JSon對象轉換成

[WebMethod] 
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 
    public bool AddNewUser(Object User) 
    { 
     return UserRepository.AddNewUser(User); 
    } 

在上面的例子中,AddNewUser方法接受User類的對象。但我收到鑄造錯誤。那麼如何將Json對象轉換爲「User」類對象呢?

回答

2

爲什麼不能修改AddNewUser方法來接受所需的類型。例如,

public bool AddNewUser(User user) 

應該日誌中用戶類型的工作已經從默認Java的腳本中使用公共構造和屬性名稱是相同類型的屬性名稱。

0

您的網絡服務應該接受User對象,而不是Object err對象。 =)

public bool AddNewUser(User user) 

不言而喻,您的JSON對象需要與您的CLR對象的屬性相匹配。 (string to string,bool to bool等)。

這就是爲什麼試圖將JSON「強制」到業務對象中的原因。使用DataContracts將JSON映射到DataContract對象,然後將其映射到業務對象。比試圖從JSON直接到業務對象更安全。

給一個去。

1

定義您User類是這樣的:

public class User 
{ 
    public User() { } 

    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 
    public string LastName { get; set; } 
    public bool Gender { get; set; } 

    public DateTime DateCreated { get; set; } 

    public string Description { get; set; } 
    public string DOB { get; set; } 
    public string Location { get; set; } 

} 

和編輯Web服務的簽名......

[WebMethod] 
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 
public bool AddNewUser(User user) 
{