2013-04-04 17 views
6

このjsonオブジェクトを逆シリアル化できますか?jsonオブジェクトをデシリアライズする方法

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

は、私がここに

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

私はJSONオブジェクトを作成しています方法です...以下、これを行うことを試みたが、成功couldntの

[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

が含まれています側。 –

+0

JSONまたはテキストとして取得していますか?残りのAJAXコールを共有してください。 – Blazemonger

+0

テキストとして取得しています –

答えて

16

をobject.id:

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

var json = $.parseJSON(mydata); 

JSON変数を使用すると、サーバ - をダブルJSONエンコードかもしれないように見え、デシリアライズされたJSONオブジェクト

+3

http://api.jquery .com/jQuery.parseJSON/- これはJSON.parse()が利用可能な場合はそれを使用し、そうでない場合はjQuery自身のコードを使用します。 – Blazemonger

5

私はこれは何が必要であると仮定する:JSON.parse(データ)

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

Ifデータをテキストとして取得していますが、到着時に配列として解析されるのではなく、文字列として解析されます。

$.ajax()オプションで.getJSONまたはdatatype:jsonを使用して解決してください。

2

あなたが本当にしかしjQueryの、here is the functionを使用したい場合は、任意のcontemporalブラウザは機能

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

あなたはキャンアクセスすべてatributesを持っています。例えば、あなたがしてこれを行うことができ