2016-10-11 15 views
0

Я хочу преобразовать этот стиль в C#. Я хочу добавить Contacts.How я могу это сделать?C# JSON Data Array

Мои Json:

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

Я хочу, чтобы этот стиль:

{ 
    "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, Name, country, заполняет его из базы данных и использует библиотеку, такую ​​как JSON.net, для ее сериализации.

Нечто похожее должно работать на ваш datamodel. Пожалуйста, смотрите Serializing Collections от 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

Хорошо, спасибо –

+0

@EmreAslan pls отметьте его как ответ, если он ответил на ваш вопрос –

0

Как Эшли Джон сказал, было бы разумно, чтобы создать класс, представляющий структуру данных JSON данных. Если вы ленивы или я сомневаюсь, как это должно выглядеть, вы можете использовать json2csharp для создания класса.

Затем используйте сериализатор json по вашему выбору, f.x. JSON.net, как упоминалось Эшли Дж., Чтобы сериализовать всю перечислимую из Контактов сразу. Если вам нужно, чтобы значение json называлось «контакты», вы можете создать содержащий класс с полем для перечисления контактов, чтобы при сериализации содержащего класса вы получили желаемый результат.