2013-12-10 40 views
0

我在我的C#項目中使用了甘特圖,它來自http://gantt.twproject.com/distrib/gantt.html。如果你點擊導出按鈕,我們會從甘特圖獲得一個json。我正在向下面的wcf傳遞相同的json。Wnt不接受甘特Json數據

function WCFJSON(ganttData) { 

    console.log(ganttData); //Object 
    var gdata = JSON.stringify(ganttData);   
    console.log(gdata); 

    $.ajax({ 
     type: "POST", 
     url: "../../GanttService.svc/SaveGanttData", // Location of the service 
     data: gdata, //Data sent to server 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", //Expected data format from server 
     processdata: true, //True or False 
     success: function (msg) {//On Successfull service call 
      ServiceSucceeded(msg); 
     }, 
     error: ServiceFailed// When Service call fails 
    }); 
} 

這是gdata變量中的json。

"{"tasks":[{"id":-1,"name":"Gantt editor","code":"","level":0,"status":"STATUS_ACTIVE","start":1386527400000,"duration":30,"end":1390415399999,"startIsMilestone":true,"endIsMilestone":false,"collapsed":false,"assigs":[{"id":"tmp_1386591686448","resourceId":"tmp_1","roleId":"tmp_1","effort":0}],"description":"","progress":0},{"id":-2,"name":"codings","code":"","level":1,"status":"STATUS_ACTIVE","start":1386527400000,"duration":10,"end":1387564199999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"description":"","progress":0},{"id":-3,"name":"gant parts","code":"","level":2,"status":"STATUS_ACTIVE","start":1386527400000,"duration":2,"end":1386700199999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":""},{"id":-4,"name":"editor parts","code":"","level":2,"status":"STATUS_SUSPENDED","start":1386700200000,"duration":4,"end":1387218599999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"3"},{"id":-5,"name":"testings","code":"","level":1,"status":"STATUS_SUSPENDED","start":1388601000000,"duration":15,"end":1390415399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"2:5","description":"","progress":0},{"id":-6,"name":"test on safari","code":"","level":2,"status":"STATUS_SUSPENDED","start":1389810600000,"duration":2,"end":1389983399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":""},{"id":-7,"name":"test on ie","code":"","level":2,"status":"STATUS_SUSPENDED","start":1390156200000,"duration":3,"end":1390415399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"6"},{"id":-8,"name":"test on chrome","code":"","level":2,"status":"STATUS_SUSPENDED","start":1390156200000,"duration":2,"end":1390328999999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"6"}],"selectedRow":2,"deletedTaskIds":[],"resources":[{"id":"tmp_1","name":"Resource 1"},{"id":"tmp_2","name":"Resource 2"},{"id":"tmp_3","name":"Resource 3"},{"id":"tmp_4","name":"Resource 4"},{"id":"tmp_5","name":"Resource 5"},{"id":"tmp_6","name":"Resource 6"},{"id":"tmp_7","name":"Resource 7"},{"id":"tmp_8","name":"Resource 8"},{"id":"tmp_9","name":"Resource 9"},{"id":"tmp_10","name":"Resource 10"}],"roles":[{"id":"tmp_1","name":"Project Managers"},{"id":"tmp_2","name":"Worker"},{"id":"tmp_3","name":"Stakeholder/Customer"}],"canWrite":true,"canWriteOnParent":true}" 

我的WCF方法是

public string SaveGanttData(String tasks) 
    { 
     try 
     { 
      var apps = JsonConvert.DeserializeObject<Tasks>(tasks); 
      var retValue = ""; 
      foreach (var task in apps.tasks) 
      {      
       retValue += "Name - " + task.name + " Code - " + task.code; 
      } 
      Console.ReadLine(); 
      return string.Format("You entered: {0}", retValue); 
     } 
     catch (Exception ex) 
     { 
      return string.Format("Failed: {0}", ex.Message); 
     } 

    } 

總是空在瀏覽器控制檯顯示的服務被擊中後。我嘗試了幾種方式,但無法將確切的json數據傳遞給我的wcf。請幫幫我!

回答

0

您服務是隻接受單個string,而要在形式發送更復雜的JSON:

  • tasks - 整數
  • deletedTaskIds - - 對象
  • selectedRow的陣列對象的陣列
  • resources - 對象數組
  • roles - 對象數組
  • canWrite - 布爾
  • canWriteOnParent - 布爾

如果您正在使用Visual Studio 2013,複製JSON到剪貼板,並使用菜單其粘貼到Visual Studio編輯>選擇性粘貼>粘貼JSON作爲類來查看從C#透視圖中代表此JSON的正確類。