Преобразование таблицы данных в подходящий объект JavaScript (C #) - PullRequest
0 голосов
/ 12 июня 2018

Короткий вопрос:

Учитывая данные на основе таблиц (например, результаты SQL), какой самый приемлемый метод преобразования этого в конкретную строку json / объектную строку js с помощью C #?

Сценарий:

У меня есть веб-страница, использующая d3.js для общих графических отчетов.Для данных я вызываю API, который выполняет хранимую процедуру и возвращает набор результатов.Мне нужен способ преобразования этих данных в подходящий объект json, который можно легко обработать в моем отчете d3.

Пример:

С помощью следующей таблицы, возвращаемой моей хранимой процедурой

enter image description here

Какой тип объекта был бы наиболее подходящим для преобразования этих данных для использования с javascript / d3 и как этого добиться?

Что я пробовал:

Так как мой API написан на C #, я попытался использовать метод JsonConvert.SerializeObject, как показано ниже.

DataTable dt = new DataTable();
using (SqlDataAdapter sql = new SqlDataAdapter(getData))
{
    sql.Fill(dt);
}

returnStr = JsonConvert.SerializeObject(dt);

, который производитпростой массив, по одному элементу на строку данных, например:

[
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup01", "Owner": "ME"
    },
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup02", "Owner": "ME"
    },
    {
        "Group": "Group01", "TrueFalse": 0, "SubGroup": "SubGroup02", "Owner": "You"
    },
    {
        "Group": "Group01", "TrueFalse": 1, "SubGroup": "SubGroup03, "Owner": "You"
    },
    {
        "Group": "Group02", "TrueFalse": 0, "SubGroup": "SubGroup01", "Owner": "Someone"
    },
    // etc...
]

Хотя с этим вполне возможно работать, я не знаю, является ли это лучшим способом для этого или мыможет создать объект, который более подходит.Если бы вы могли дать какие-либо указания на лучшие практики и возможные примеры, это было бы здорово.

1 Ответ

0 голосов
/ 12 июня 2018

Это скорее вопрос предпочтений и, возможно, согласованности в вашей модели данных.То, что у вас есть, возможно, является предпочтительным методом, поскольку его легко перебирать, зная структуру объекта в массиве.Другой способ сделать это, и его сложнее понять, если вы начинающий разработчик, - это иметь массив для каждого столбца в таблице и выполнять итерации по индексу массива для получения значений.Это потребует больше кода и будет менее читабельным.Таким образом, вместо того, чтобы индексировать каждое поле для каждой итерации в массиве, у вас просто есть объекты, которые имеют согласованную структуру, даже если поле в объекте пустое, что приводит к другой проблеме с подходом «массив на столбец»:быть абсолютно уверенным, что поле не может быть пустым.В противном случае ваши показатели индексации будут непоследовательными.

Короче говоря, то, что у вас есть, является семантически наиболее подходящим.Столбцы таблицы приравниваются к полям в вашем объекте, а объект JSON соответствует строке в вашей таблице. Надеюсь, это имеет смысл для вас и поможет.

...