2011-11-20 42 views
5

Tôi cần dịch vụ web của tôi để trở về JSON ...dịch vụ web sẽ trả về json

Tôi có đoạn mã sau vào tập tin .asmx tôi:

namespace Feed 
{ 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 

    [System.Web.Script.Services.ScriptService] 
    public class searchPerson : System.Web.Services.WebService 
    { 

     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public Person GetDave() 
      { 
       Person dave = new Person(); 

       dave.FirstName = "Dave"; 
       dave.LastName = "Ward"; 

     return dave; 
     } 
    } 
} 

nào trả về như sau:

<?xml version="1.0" encoding="utf-8"?> 
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
    <FirstName>Dave</FirstName> 
    <LastName>Ward</LastName> 
</Person> 

Làm cách nào để buộc nó trả về JSON thay vì XML?

+0

Nếu bạn cần JSON chứ không phải XML, tại sao bạn có một không gian tên được xác định? – Oded

+0

Có vẻ như nó đang được thiết lập cho cả hiện tại .. Bạn có thể truy cập YourPage.asmx/js và xem tập lệnh proxy Javascript không? –

+0

@MikeChristensen Có thể thực hiện được – Mikael

Trả lời

5

Định nghĩa dịch vụ web của bạn có vẻ chính xác. Đảm bảo rằng bạn đang gọi dịch vụ qua một bài đăng và nhớ rằng khóa đang chỉ định tiêu đề 'loại nội dung' là application/json.

(Điều này được sử dụng jQuery nhưng bạn có thể sử dụng javascript mức thấp nếu bạn thích)

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8;", 
    url: "http://MyWebServiceURL", 
    data: JSON.stringify({ ParameterName: "DataToSend" }), 
    dataType: "json", 
    success: function (data, textStatus, jqXHR) { 
     //do something 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     //fail nicely 
    } 
}); 
+0

Điều này cho thấy dịch vụ web đang hoạt động, vấn đề là cách tôi gọi nó từ ứng dụng iPhone của mình. – Mikael

1

Thêm referances dưới đây trước khi bắt đầu:

using System.Web.Script.Services; 
using System.Web.Script.Serialization; 

Sử dụng mã dưới đây vào phương pháp của bạn, ví chuyển đổi bất kỳ dữ liệu nào sang định dạng Dữ liệu JSON ở cuối:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
return serializer.Serialize(empData); 

empData là mảng Dữ liệu Hàng từ DataTable.

Các vấn đề liên quan