2016-10-11 3 views
0

C#에서이 스타일을 변환하고 싶습니다. 연락처를 추가하고 싶습니다. 어떻게해야합니까?C# JSON 데이터 배열

내 JSON은 :

{ 
    "contacts": [ 
     {  "Id": "1", 
       "Name": "emre", 
       "Country": "istanbul" 
     }, 
     {  "Id": "2", 
       "Name": "semih", 
       "Country": "siirt" 
     } 

    ] 
} 

가 내 웹 서비스 :

String resultJSON = ""; 
    JavaScriptSerializer js = new JavaScriptSerializer(); 

    try{ 
     Context.Response.Clear(); 
     Context.Response.ContentType = "application/json"; 

     con.Open(); 
     cmd = new SqlCommand("Select * from City", con); 
     reader = cmd.ExecuteReader(); 
     dt = new DataTable(); 
      con.Close(); 



     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     List<Dictionary<String, Object>> tableRows = new List<Dictionary<string, object>>(); 
     Dictionary<String, Object> row; 
     foreach (DataRow dr in dt.Rows) 
     { 
      row = new Dictionary<string, object>(); 
      foreach (DataColumn col in dt.Columns) 
      {      
       row.Add(col.ColumnName, dr[col].ToString()); 
      } 
      tableRows.Add(row); 
     } 
      resultJSON = serializer.Serialize(tableRows).ToString(); 

    } 
    catch (Exception ex) 
    { 
     resultJSON = ex.Message.ToString(); 

    } 
    Context.Response.Write(resultJSON); 

    // return resultJSON; 

} 

답변

1

대신 행이 데이터 모델을 만들 직접 직렬화의 말은 클래스 이름

[{ 
    "Id": "1", 
    "Name": "emre", 
    "Country": "istanbul" 
}, { 
    "Id": "2", 
    "Name": "semih", 
    "Country": "siirt" 
}] 

나는이 스타일을 원하는 ID, 이름, 국가와 같은 속성이 다른 연락처는 데이터베이스에서 채우고 사용하십시오. 라이브러리를 JSON.net과 같이 직렬화하십시오.

비슷한 데이터 모델을 사용해야합니다. 애슐리 존 말했듯이,이 데이터 JSON 데이터 구조를 나타내는 클래스를 만드는 똑똑한 것 JSON.net

Product p1 = new Product 
{ 
    Name = "Product 1", 
    Price = 99.95m, 
    ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc), 
}; 
Product p2 = new Product 
{ 
Name = "Product 2", 
Price = 12.50m, 
ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc), 
}; 
ProductList productList = new ProductList(); 
p.Add(p1); 
p.Add(p2); 

string json = JsonConvert.SerializeObject(productList , Formatting.Indented); 

class ProductList 
{ 
    Public List<Product> products{get;set;} 
    // Add method or other methods you require for your collection 

} 
+0

@EmreAslan pls 대답. 비슷한 것이 도움이 될 것입니다. –

+0

Ok 고맙습니다. –

+0

@EmreAslan pls이 질문에 답변 한 경우 답변으로 표시합니다. –

0

에서 Serializing Collections를보고하십시오. 게으르다면 또는 어떻게 보일지 의심 스럽다면 json2csharp을 사용하여 클래스를 생성 할 수 있습니다.

그런 다음 선택한 json serializer, f.x를 사용하십시오. 한 번에 연락처의 전체 열거 형을 직렬화하기 위해 Ashley J에 의해 언급 된 JSON.net. json 값의 이름이 'contacts'인 경우 연락처 열거 형 필드를 포함하는 클래스를 포함 할 수 있으므로 포함하는 클래스를 직렬화하면 원하는 결과를 얻을 수 있습니다.