Я не очень хорошо знаком с .NET, поэтому я даже не уверен, что знаю, как правильно задать этот вопрос, потому что я должен верить, что это обычный вариант использования, но мой google-fu жалок.

В PHP, если я хочу получить данные из базы данных и отформатировать их как JSON, я бы использовал PDO примерно так:

$query = $this->dbConn->prepare("SELECT * FROM Customers");
$query->execute();
$resultsSet = $query->fetchALL(PDO::FETCH_ASSOC);
foreach ( $resultsSet as $row  ){
    $json = json_encode( $row );
    //POST $json to web service or something
}

Это создаст JSON в формате {"Имя столбца": "Значение столбца", "Имя столбца": "Значение столбца", ...}, что именно то, что я хочу.

Как мне сделать это в VB.NET? Я могу получить данные из моего источника данных с помощью OdbcDataReader следующим образом:

Dim Conn As New OdbcConnection("[connection string]")
Dim Cmd As New OdbcCommand("SELECT * FROM Customers", Conn)
Dim Reader As OdbcDataReader
Dim serializer As New JavaScriptSerializer()

Conn.Open()
Reader = Cmd.ExecuteReader()

While (Reader.Read())
    json = serializer.Serialize(Reader).ToString 
    'this doesn't work - returns [{"FieldCount":126},{"FieldCount":126},{"FieldCount":126}...]  
    'POST json to web service
End While

По сути, мне нужно периодически читать около 100 довольно больших файлов (более миллиона записей) из устаревшего приложения, используя драйвер ODBC этого приложения, конвертировать его в JSON и отправлять в удаленную веб-службу.

Важно, чтобы JSON содержал пары имя / значение в форме «имя столбца»: «значение столбца». Я открыт для альтернативных предложений.

Я использую VS 2017, .NET 4.6

-1
Craig Jacobs 17 Мар 2018 в 03:09

1 ответ

Лучший ответ

Добавьте в проект пакет Nuget Newtonsoft.Json. Вместо читателя используйте DataAdapter и DataTable.

DataAdapter.Fill(DataTable)

Затем передайте DataTable этой маленькой функции

Public Function DataTableToJSONWithJSONNet(table As DataTable) As String
        Dim JSONString As String = String.Empty
        JSONString = JsonConvert.SerializeObject(table)
        Return JSONString
End Function
1
Mary 17 Мар 2018 в 07:06