2016-03-20 4 views
0

Я создаю объекты на основе результатов поиска, которые я получаю. Затем я пытаюсь выполнить сериализацию объектов, чтобы вернуть форматированную строку JSON. Я пытаюсь выполнить приведенный ниже сценарий. Я не хочу жестко программировать JSON, я хочу, чтобы JSON выводился только из сериализации объекта. Я не уверен, как выполнить то, что я ищу. Примечание. Для удобства я имею некоторые пользовательские значения, жестко закодированные в моем примере кода.Создание и хранение объектов для сериализации JSON?

Мой код:

using System; 
using System.Collections.Generic; 
using System.Web.Script.Serialization; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     getSearchResultsString(); 
    } 

    public void getSearchResultsString() 
    { 
     string[] userList = { "user1", "user2", "user3" }; 

     var json = ""; 

     List<string> users = new List<string>(); 

     foreach (string user in userList) 
     { 

      string userName = "jsmith"; 

      string email = "[email protected]"; 

      string createdDate = "3/20/2016"; 

      ADUser aduser = new ADUser(userName, email, createdDate); 

      users.Add(new JavaScriptSerializer().Serialize(aduser)); 
     } 
     json = String.Join(", ", users); 
     Response.Write(json); 
    } 

    public class ADUser 
    { 
     public ADUser(string UserName, string Email, string CreatedDate) 
     { 
      userName = UserName; 
      email = Email; 
      createdDate = CreatedDate; 
     } 

     // Properties. 
     public string userName { get; set; } 
     public string email { get; set; } 
     public string createdDate { get; set; } 
    } 
} 

Мой выходной ток:

{"userName":"jsmith","email":"[email protected]","createdDate":"3/20/2016"}, {"userName":"jsmith","email":"[email protected]","createdDate":"3/20/2016"}, {"userName":"jsmith","email":"[email protected]","createdDate":"3/20/2016"} 

Мой желаемый результат:

{ 
    "users": [{ 
     "userName": "jsmith", 
     "email": "[email protected]", 
     "createdDate": "3/20/2016" 
    }, { 
     "userName": "jsmith", 
     "email": "[email protected]", 
     "createdDate": "3/20/2016" 
    }, { 
     "userName": "jsmith", 
     "email": "[email protected]", 
     "createdDate": "3/20/2016" 
    }] 
} 
+1

не составляйте список строк, составляйте список объектов! –

+0

Что мне нужно изменить/добавить в мой код? –

ответ

2

Вы можете попробовать пересмотреть getSearchResultsString() как удар

public static void getSearchResultsString() 
    { 
     string[] userList = { "user1", "user2", "user3" }; 

     var json = ""; 

     List<ADUser> users = new List<ADUser>(); 

     foreach (string user in userList) 
     { 

      string userName = "jsmith"; 

      string email = "[email protected]"; 

      string createdDate = "3/20/2016"; 

      ADUser aduser = new ADUser(userName, email, createdDate); 

      users.Add(aduser); 
     } 
     json = new JavaScriptSerializer(). 
      Serialize(new { users = users }); 
     Response.Write(json); 
    } 
+0

Так оно и было, спасибо! Итак, что же такое синтаксис «Serialize» (new {users = users}); по существу? –

+0

Я пишу так, чтобы упростить код, он просто создает анонимный тип, для получения дополнительной информации вы можете получить доступ к [Анонимные типы] (https://msdn.microsoft.com/en-us/library/bb397696.aspx) –

Смежные вопросы