2011-06-30 66 views
0

如何將對象序列化爲json並將其發送到Web服務?如何將對象序列化爲json並將其發送到Web服務?

var object = something.... 
function BindJson() { 
     $.ajax({ 
      type: "POST", 
      url: "NewPage.aspx/GetJson", 
      data: "{}", 
      contentType: "application/json", 
      dataType: "json", 
      success: function (data) { 

      } 
     }) 
    } 

<body onload="BindJson();"> 

服務器:

[WebMethod] 
     public static string GetSerializedJsonObject() 
     { 
      return ""; 
     } 
+0

我想序列化對象,並將其發送到我的web服務 –

+0

的精確副本(HTTP [Json的Ajax和放慢參數傳遞。]: //sackoverflow.com/questions/6534510/json-ajax-with-paramter-passing)(同一個問號,一小時前) –

回答

2

這將爲你工作(下面的完整工作代碼示例)。關鍵是傳入一個Person對象。另外,我使用了一個簡單的web服務(myService.asmx)而不是一個aspx頁面。如果不需要額外的開銷,爲什麼還要打擾呢?

關鍵是,在客戶端上創建一個Person對象,然後使用JSON.stringify將Person對象傳遞給webservice。

的Javascript

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js"></script> 
<script type="text/javascript"> 
    function BindJson() { 
     $.ajax({ 
      type: "POST", 
      url: "myService.asmx/SerializeJson", 
      data: JSON.stringify({ person:{ firstName: "Denny", lastName: "Cherian", department: "Microsoft PSS", address: { addressline1: "Microsoft India GTSC", addressline2: "PSS - DSI", city: "Bangalore", state: "Karnataka", country: "India", pin: "560028" }, technologies: ["IIS", "ASP.NET", "JavaScript", "AJAX"] }}), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data1) { 
       alert(data1.d); 
      }, 
      error: function (request, status, errorThrown) { 
       alert(status); 
      } 
     }); 
    } 

    $(document).ready(function() { 
     BindJson();  
    }); 
</script> 

C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 

namespace TestProject 
{ 
    /// <summary> 
    /// Summary description for myService 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService] 
    public class myService : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public string SerializeJson(Person person) 
     { 
      return "Success"; 
     } 

     public class Person 
     { 
      public string firstName { get; set; } 
      public string lastName { get; set; } 
      public string department { get; set; } 
      public Address address { get; set; } 
      public string[] technologies { get; set; } 
     } 

     public class Address 
     { 
      public string addressline1 { get; set; } 
      public string addressline2 { get; set; } 
      public string city { get; set; } 
      public string state { get; set; } 
      public string country { get; set; } 
      public string pin { get; set; }    
     } 
    } 
} 
0

看看這個MSDN文章在:JSON Serialization

Person p = new Person(); 
//Set up Person object... 
MemoryStream stream1 = new MemoryStream(); 
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person)); 
ser.WriteObject(stream1, p); 

內存流將包含...

{「age」:42,」name」:」John」} 
+3

@sly_Chandan:做你自己的研究,然後,哥們。你的問題表明沒有努力,可能應該剛剛被投票結束。 – Yuck

1

可以使用這個

var myJSONText = JSON.stringify(myObject,replacer);

http://www.json.org/js.html

採取希望它幫助。

+0

你在哪裏可以回答任何地方談論web服務? –

0

有關於它在這裏一個問題:Basic Simple Asp.net + jQuery + JSON example

你應該很容易適應的代碼中有您的需求。唯一沒有說明的是如何在Javascript代碼中將對象序列化爲JSON,但Billa Ustad已經回答了這個問題。

如果你想進一步探討這個問題,這裏有一個很棒的教學文章:Full ASP.NET, LINQ, jQuery, JSON, Ajax Tutorial

請記住:有時我們只是想給魚,但最終我們要學會如何捕捉我們自己的魚。

相關問題