ahmed_sa Ответов: 1

Отображение данных в странном формате как конвертировать их в формат json


проблема

data display on strange format How to convert it to json format 


Я делаю функцию возвращающей список объектных данных имени столбца где передаю имя таблицы

функция meaning возвращает имена столбцов, соединенные со ссылкой на таблицу

но проблема отображение данных в странном формате как показано ниже :

the result as following

[1,1,"كود الموظف","EmployeeId","Employees",2,2,"الفرع","BranchCode","Employees",3,3,"الاسم","EmployeeName","Employees"]

Способ отображения данных в формате JSON смысл отображать данные как
as [rowno:1,code:1,arabiccaption:كود الموظف ,etc.....


Что я уже пробовал:

[HttpGet("{tableName}")]
       [Produces("application/json")]
       public List<object> GetColumnNames([FromRoute] string tablename)
       {

           var columnNames = new List<object>();
           using (var command = _context.Database.GetDbConnection().CreateCommand())
           {

               command.CommandText = $"SELECT row_number() over (order by code asc ) as rownum,code ,ArabicCaption, COLUMN_Name,TableName  FROM INFORMATION_SCHEMA.COLUMNS left join ReferenceFiles on INFORMATION_SCHEMA.COLUMNS.COLUMN_Name=ReferenceFiles.FieldName and INFORMATION_SCHEMA.COLUMNS.TABLE_NAME=ReferenceFiles.TableName WHERE TableName =  N'{tablename}'  and TABLE_NAME= N'{tablename}'";

               _context.Database.OpenConnection();
               using (var reader = command.ExecuteReader())
               {
                   if (reader.HasRows)
                   {
                       while (reader.Read())
                       {
                           columnNames.Add((Int64)reader["rownum"]);
                           columnNames.Add((Int32)reader["code"]);
                           columnNames.Add((string)reader["ArabicCaption"]);
                           columnNames.Add((string)reader["COLUMN_Name"]);
                           columnNames.Add((string)reader["TableName"]);
                       }
                   }
                   else
                   {
                       columnNames.Add("Not Found");
                   }
               }
           }
           return columnNames;

       }

1 Ответов

Рейтинг:
2

Richard Deeming

Вы возвращаете массив, содержащий значение каждого столбца из каждой строки, сглаженный в один список. Вместо этого вам нужно вернуть массив объектов:

while (reader.Read())
{
    columnNames.Add(new
    {
        rownum = (Int64)reader["rownum"],
        code = (Int32)reader["code"],
        arabicCaption = (string)reader["ArabicCaption"],
        columnName = (string)reader["COLUMN_Name"],
        tableName = (string)reader["TableName"]
    });
}

Возвращаемые данные будут выглядеть примерно так:
[
    {
        rownum: 1,
        code: 1,
        arabicCaption: "كود الموظف",
        columnName: "EmployeeId",
        tableName: "Employees"
    },
    {
        rownum: 2,
        code: 2,
        arabicCaption: "الفرع",
        columnName: "BranchCode",
        tableName: "Employees"
    },
    {
        rownum: 3,
        code: 3,
        arabicCaption: "الاسم",
        columnName: "EmployeeName",
        tableName: "Employees"
    }
]