2013-04-04 14 views
6

Jak można deserializować ten obiekt Json poniżej?jquery jak deserializować obiekt json

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

Próbowałem to zrobić poniżej, ale nie mogliśmy się uda ...

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); 
      }); 
} 

oto sposób tworzę obiekt 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

Wygląda na to może być dwukrotnie json kodowanie na server- bok. –

+0

Czy odzyskujesz ją jako JSON lub jako tekst? Podziel się resztą swojego połączenia AJAX. – Blazemonger

+0

Wyszukuję jako tekst –

Odpowiedz

16

Można to zrobić za pomocą:

zmiennej
var mydata; // [{"id":"67","name":"TestString"}] 

var json = $.parseJSON(mydata); 

JSON będzie zawierać json obiektu de-odcinkach

+3

http: //api.jquery .com/jQuery.parseJSON/- użyje 'JSON.parse()' jeśli jest dostępna, i własnego kodu jQuery, jeśli tak nie jest. – Blazemonger

5

zakładam to jest to, czego potrzebujesz : JSON.parse (dane)

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

Jeśli pobierasz dane jako tekst, nie jest on analizowany jako tablica w momencie nadejścia, ale jako ciąg znaków.

Użyj opcji .getJSON lub datatype:json w swoich opcjach , aby rozwiązać ten problem.

0
var object = JSON.parse(data); 

teraz ty cann dostęp do wszystkich ATUTY. Na przykład object.id

Powiązane problemy