Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JSON / 10 сообщений из 10, страница 1 из 1
08.10.2016, 00:01
    #39323116
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Прошу помощь клуба. Проект WebAPI. На клиенте есть Kendo Grid. Пытаюсь ему передать название колонок с сервера массивом json. Нужно сереализовать такую структуру.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    //        schema: {
    //            data: "Data",
    //            total: "Total",
    //            model: {
    //                id: "Id",
    //                fields: {
    //                    Id: { type: "number" },
    //                    LastName : { type: "string" },
    //                    FirstName : { type: "string" },
    //                    Office : { type: "number" },
    //                    Supervisor : { type: "number" }
    //                }
    //            }
    //        },


Тут получается затык в перечислении полей. А именно сформировать пары поле: значение. Если поле известно, то делаю так, через анонимный объект. А если имя поля считывается сначала в переменную? Как создать анонимный объект?

Код: c#
1.
2.
3.
4.
5.
6.
// static columns
schema.model.fields.Add(new { Id = new { type = "number" } });
schema.model.fields.Add(new { LastName = new { type = "string" } });
schema.model.fields.Add(new { FirstName = new { type = "string" } });
schema.model.fields.Add(new { Office = new { type = "string" } });
schema.model.fields.Add(new { Supervisor = new { type = "string" } });
...
Рейтинг: 0 / 0
08.10.2016, 00:08
    #39323120
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
да, спасибо создателям кенду за это))) почему нельзя было сделать проще?

Код: c#
1.
2.
3.
fields: {
                       fieldname:"Id", { type: "number" },
}
...
Рейтинг: 0 / 0
08.10.2016, 00:35
    #39323132
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Relic Hunter,

да там и
Код: javascript
1.
type:

лишний :)
...
Рейтинг: 0 / 0
08.10.2016, 21:33
    #39323321
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Relic Hunterда, спасибо создателям кенду за это))) почему нельзя было сделать проще?

Код: c#
1.
2.
3.
fields: {
                       fieldname:"Id", { type: "number" },
}



Это проще?
...
Рейтинг: 0 / 0
11.10.2016, 18:12
    #39324794
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Что, никто не поможет запилить такой формат?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            schema: {
                data: "Data",
                total: "Total",
                model: {
                    id: "Id",
                    fields: {
                        Id: { type: "number" }
                    }
                }
            }
...
Рейтинг: 0 / 0
11.10.2016, 19:52
    #39324843
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Может глупость скажу (потому не заметил у тебя какого-нить нюанса).

Я просто создавал словарь Dictionary<string, object>, при необходимости иерархически вкладывал внутрь другие аналогичные словари и сериализовал в JSON стандартными средствами.
...
Рейтинг: 0 / 0
11.10.2016, 20:48
    #39324869
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Shocker.Pro,

webapi сам сереализует в json известные классы. а если класс в дизайне не известен, то затык.
...
Рейтинг: 0 / 0
11.10.2016, 20:52
    #39324870
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Так класс будет известен - Dictionary<string, object>
...
Рейтинг: 0 / 0
11.10.2016, 22:27
    #39324892
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Shocker.ProТак класс будет известен - Dictionary<string, object>
спасибо. так работает.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        public async Task<Schema> GetResourceGridSchema(int a)
        {
            Dictionary<string, object> values;
            Schema schema = new Schema();
            schema.model = new Model();
            schema.model.fields = new List<Object>();

            // static columns
            schema.model.fields.Add(new { Id = new { type = "number" } });
            schema.model.fields.Add(new { LastName = new { type = "string" } });
            schema.model.fields.Add(new { FirstName = new { type = "string" } });
            schema.model.fields.Add(new { Office = new { type = "string" } });
            schema.model.fields.Add(new { Supervisor = new { type = "string" } });
            // dynamic columns
            var competencyCategories = await db.CompetencyCategories.ToListAsync();
            foreach (var cat in competencyCategories)
            {
                values = new Dictionary<string, object>();
                values.Add(cat.CompetencyCategoryName, new { type = "number" });
                schema.model.fields.Add(values);
            }

            return schema;

        }

...
Рейтинг: 0 / 0
12.10.2016, 20:09
    #39325651
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON
Потребовалось передать пару - values: employees. именно без кавычек. но, блин, сериализатор обрамляет кавычками, и передается не имя переменной, а литерал. На JS это просто делается. А как на сервере объяснить сериализатору, что это массив, а не литерал?

автор{ field: "AssignedEmployeeId", values: employees, title: "Employee" },
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JSON / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]