2 массива для сериализации - PullRequest
2 голосов
/ 23 июня 2011

У меня есть следующий код, который работает хорошо:

Dim dept As New ArrayList
Dim forename As New ArrayList

objJSONStringBuilder = New StringBuilder()
objSQLConnection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connString"))

objSQLCommand = New SqlCommand("select dept, forename from table1", objSQLConnection)

objSQLCommand.Connection.Open()
objSQLDataReader = objSQLCommand.ExecuteReader()

While objSQLDataReader.Read()
    dept.Add(New With {Key .dept = objSQLDataReader("dept")})
    forename.Add(New With {Key .forename = objSQLDataReader("forename")})
End While

objSQLDataReader.Close()
objSQLCommand.Connection.Close()

Dim serializer As New JavaScriptSerializer()
Dim arrayJson As String = serializer.Serialize(dept)

Return arrayJson

Что дает мне:

[
    {
        "dept": "dept1"
    },
    {
        "dept": "dept2"
    },
    {
        "dept": "dept3"
    }
]

Как мне добавить второй столбец forename в данные json тоже такон возвращает:

[
    {
        "dept": "dept1",
        "forename": "adam"
    },
    {
        "dept": "dept2",
        "forename": "joe"
    },
    {
        "dept": "dept3",
        "forename": "smith"
    }
]

В конце концов, я захочу добавить больше столбцов, то есть фамилию.

Ответы [ 2 ]

4 голосов
/ 23 июня 2011

Вам нужно сделать один объект с двумя свойствами:

dept.Add(New With {Key .dept = objSQLDataReader("dept"), .forename = objSQLDataReader("forename")})
0 голосов
/ 23 июня 2011

Почему вы храните dept и имя одной и той же таблицы / объекта в разных списках? Я думаю, что лучший способ сделать это - создать объект, представляющий «table1», например:

public class Table1Object {
    public string Dept { get; set; }
    public string Forename { get; set; }
}

и затем в вашем цикле чтения данных сделайте так:

List<Table1Object> table1List = new List<Table1Object>()

while (objSQLDataReader.Read())
{
    table1List.Add(new Table1Object 
                       { 
                           Dept = objSQLDataReader("dept"), 
                           Forename = objSQLDataReader("forename") 
                       });
}

После этого

string arrayJson = serializer.Serialize(table1List)

Должен дать вам желаемый JSON

PS. Мой VB немного ржавый, но если я допустил какие-либо ошибки в коде, я надеюсь, что вы поняли суть этого:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...