2012-01-17 11 views
2

C# 코드에서 가져온 값 집합을 javascript 배열에 저장해야합니다. 임에 오류가 발생했습니다. 누군가 오류가 무엇인지 알 수 있습니까? 이 jcode를 사용하고 있습니다.개체의 JSON 배열 구문 분석

$.get('Dataextract.aspx', function (data, textStatus) { 
     alert('Status is ' + textStatus);//success 
     alert('JSON data string is: ' + data);//string as below 

    var JSONdata = data; 
    eval(JSONdata);//error here-> expected ; 
    alert(JSONdata.rowval[0].CustomerID); 

}, 'text'); 

JSON 객체의 배열을 검색하기 위해 ajax 쿼리를 사용하고 있습니다. 내가 얻는 데이터 객체 값은 문자열과 같은 것이다. 여기

{"rowval" :[{"CustomerID":12"Title":"Mr.""FirstName":"Johnny""MiddleName":"A.""LastName":"Caprio""CompanyName":"Bikes and Motorbikes""RowNumber":10},{"CustomerID":16"Title":"Mr.""FirstName":"Christopher""MiddleName":"R.""LastName":"Beck""CompanyName":"Bulk Discount Store""RowNumber":11},{"CustomerID":18"Title":"Mr.""FirstName":"David""MiddleName":"J.""LastName":"Liu""CompanyName":"Catalog Store""RowNumber":12},{"CustomerID":19"Title":"Mr.""FirstName":"John""MiddleName":"A.""LastName":"Beaver""CompanyName":"Center Cycle Shop""RowNumber":13},{"CustomerID":20"Title":"Ms.""FirstName":"Jean""MiddleName":"P.""LastName":"Handley""CompanyName":"Central Discount Store""RowNumber":14},{"CustomerID":21"Title":"FirstName":"Jinghao""MiddleName":"LastName":"Liu""CompanyName":"Chic Department Stores""RowNumber":15},{"CustomerID":22"Title":"Ms.""FirstName":"Linda""MiddleName":"E.""LastName":"Burnett""CompanyName":"Travel Systems""RowNumber":16},{"CustomerID":23"Title":"Mr.""FirstName":"Kerim""MiddleName":"LastName":"Hanif""CompanyName":"Bike World""RowNumber":17},{"CustomerID":24"Title":"Mr.""FirstName":"Kevin""MiddleName":"LastName":"Liu""CompanyName":"Eastside Department Store""RowNumber":18},{"CustomerID":25"Title":"Mr.""FirstName":"Donald""MiddleName":"L.""LastName":"Blanton""CompanyName":"Coalition Bike Company""RowNumber":19},{"CustomerID":28"Title":"Ms.""FirstName":"Jackie""MiddleName":"E.""LastName":"Blackwell""CompanyName":"Commuter Bicycle Store""RowNumber":20}]} 

당신은 예 -에 대한 두 개의 클래스가 그들에게 RoVal 및 고객을 울어 필요하고 그래서 그들을 정의

sb.Append("{\"rowval\" :"); 
      sb.Append("["); 
      if (table != null) 
      { 
       foreach (DataRow row in table.Rows) 
       { 
        sb.Append("{"); 
        if (row.Table != null && row.Table.Columns != null && row.Table.Columns.Count > 0) 
        { 
         foreach (DataColumn column in row.Table.Columns) 
         { 
          parseMember(row[column], column.ColumnName, sb); 
         } 
        } 
        sb.Append("},"); 
       } 
      } 
      sb.Append("]"); 
      sb.Append("}"); 

      sqlcon.Close(); 
      Response.Write(sb); 



     } 

     private static void parseMember(object val, string memberName, StringBuilder sb) 
     { 
      Type t = val.GetType(); 

      if (memberName != null && memberName.Trim().Length > 0) 
       sb.AppendFormat("\"{0}\":", memberName); 
      if (typeof(string) == t || typeof(char) == t) 
       sb.AppendFormat("\"{0}\"", val.ToString()); 
      else 
       sb.AppendFormat("{0}", val.ToString()); 
     } 
+2

무엇이 질문입니까? – ShankarSangoli

+0

(결함이있는) JSON 객체를 만드는 데 사용중인 C# 코드를 편집하고 게시 할 수 있습니까? 공백이있는 따옴표를 보면 ''CustomerID '' '25' 'Title' '' '' "FirstName": ""Donald ""... – msanford

+0

예. 죄송합니다. 잘못된 json을 게시했습니다. –

답변

2

당신이 다음

$.get('Dataextract.aspx', function (data, textStatus) { 
     alert('Status is ' + textStatus);//success 
     alert('JSON data string is: ' + data);//string as below 
    // no need for eval 
    // var JSONdata = data; 
    // eval(JSONdata);//error here-> expected ; 
    alert(JSONdata.rowval[0].CustomerID); 

}, "json"); // <-- 

처럼, JQuery와의 json as 4th argument in $ 갔지 will parse the json which you can iterate using the each` 방법과 동일 dataType를 지정하거나 JSON을 구문 분석 할 수 json을 얻는 경우 명시 적으로 같은

$.get('Dataextract.aspx', function (data, textStatus) { 
     alert('Status is ' + textStatus);//success 
     alert('JSON data string is: ' + data);//string as below 

    var JSONdata = $.parseJSON(data); 
    // eval(JSONdata);//error here-> expected ; again no need for the eval 
    alert(JSONdata.rowval[0].CustomerID); 

}, 'text'); 

업데이트

json 당신은 형성이 정확하지 않습니다. json의 유효성 확인을 위해 www.jsonlint.com을 방문하십시오. 유효한 json입니다.

{ 
    "rowval": [ 
     { 
      "CustomerID": 12, // <-- you are missing the commas 
      "Title": "Mr.", 
      "FirstName": "Johnny", 
      "MiddleName": "A.", 
      "LastName": "Caprio", 
      "CompanyName": "Bikes and Motorbikes", 
      "RowNumber": 10 
     } 
    ] 
} 
+0

시도하고 알려 드리겠습니다 .. –

+0

+1. 물론 이것은 여전히 ​​JSON이 제대로 구성되어있는 경우에만 작동합니다. – StriplingWarrior

+0

이제 오류가 예상됩니다 -} : P json이 –

0

JSON을 생성하는 내 C# 코드입니다 :

class RowVal 
{ 

    public List<Customer> Customers {get;set;} 
} 

class Customer 
{ 
    public int ID {get;set;} 
    public string Title{get;set;} 
    public string FirstName {get;set;} 
    //and so on 

} 

이제 JSON 문자열을 비 직렬화 할 수 있습니다.

JavascriptSerializer serializer = new JavascriptSerializer(); 
RowVal rowVal = serializer.Deserialize<RowVal>(yourJSonstring); 
+0

javascriptserializer가없는 asp 1.1에서 내 응용 프로그램을 개발해야합니다 –

+2

가능한 경우 JSON.NET을 사용하십시오 (JSON.NET이 1.1에서 지원되는지 여부는 알 수 없습니다). 그에 따라 질문에 태그를 붙여야합니다. – Icarus