2013-04-04 43 views
6

Làm thế nào bạn có thể deserialize đối tượng json này dưới đây?jquery làm thế nào để deserialize đối tượng json

[{"id":"67","name":"TestString"}] 

tôi đã cố gắng để làm điều này dưới đây nhưng couldnt thành công ...

success: function (data, status) { 
      $.each(data, function (dt) { 

       var mydata = data.d; 

       alert(mydata); // returns [{"id":"67","name":"TestString"}] 

       $("#txt_speciality").tokenInput("add", mydata.id); 
      }); 
} 

đây là cách tôi đang tạo ra các đối tượng json

[WebMethod] 
public static string get_specialities(string ProfessionalID) 
{ 
    Database db = DatabaseFactory.CreateDatabase("Connection String2"); 
    DbCommand dbCommand; 
    dbCommand = db.GetStoredProcCommand("Select_Professionals_Speciality"); 
    db.AddInParameter(dbCommand, "prof_id", DbType.Int16, Convert.ToInt16(ProfessionalID)); 
    IDataReader dr = db.ExecuteReader(dbCommand); 
    //[{ id: 3, name: "test3" }] 
    string return_str="["; 
    int i = 0; 
    while (dr.Read()) { 
     if (i > 0) 
      return_str += ","; 
     return_str += "{\"id\":\"" + dr["SpecialtyID"].ToString().Trim() + "\",\"name\":\"" + dr["SpecialtyName"].ToString().Trim() + "\"}"; 
     i++; 
    } 
    return_str += "]"; 
    return return_str; 
} 
+2

Dường như bạn có thể tăng gấp đôi json mã hóa trên Server- bên. –

+0

Bạn có truy xuất nó dưới dạng JSON hoặc dưới dạng văn bản không? Vui lòng chia sẻ phần còn lại của cuộc gọi AJAX của bạn. – Blazemonger

+0

Tôi đang truy xuất dưới dạng văn bản –

Trả lời

16

Bạn có thể làm điều này với:

biến
var mydata; // [{"id":"67","name":"TestString"}] 

var json = $.parseJSON(mydata); 

các json sẽ chứa các đối tượng json de-serialized

+3

http: //api.jquery .com/jQuery.parseJSON/- điều này sẽ sử dụng 'JSON.parse()' nếu nó có sẵn và mã của jQuery nếu nó không có. – Blazemonger

5

Tôi giả định này là những gì bạn cần : JSON.parse (dữ liệu)

success: function (data, status) { 
      data = JSON.parse(data); 
      $.each(data, function (dt) { 

      var mydata = data.d; 

      alert(mydata); // returns [{"id":"67","name":"TestString"}] 

      $("#txt_speciality").tokenInput("add", mydata.id); 
     }); 
} 
0

Nếu bạn đang truy xuất dữ liệu dưới dạng văn bản, nó không được phân tích cú pháp dưới dạng một mảng khi đến, mà là một chuỗi.

Sử dụng .getJSON hoặc datatype:json trong các tùy chọn $.ajax() của bạn để giải quyết vấn đề này.

2

Nếu bạn thực sự muốn sử dụng jQuery, here is the function Tuy nhiên, bất kỳ trình duyệt contemporal có chức năng

JSON.parse() 
0
var object = JSON.parse(data); 

Bây giờ bạn truy cập tất cả các cann atributes. Ví dụ object.id

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