powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
25 сообщений из 80, страница 1 из 4
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38056233
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сериализовать произвольную выборку в json, подозреваю, что это хорошо делать с помощью linq2sql или ef, а чем именно и как?
Ткните в какой-нибудь хэлловорлд по теме. Использовать DataContractJsonSerializer умею.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38057144
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
System.Web.Extensions.dll
Код: c#
1.
2.
var items = Enumerable.Range(1, 10).Select(d => new { id = d, name = "name" + d });
string json = new JavaScriptSerializer().Serialize(items);
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38057466
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первую строчку я не совсем понял. В ней вроде бы создается коллекция из 10и объектов. Если да, то мне не ясно, как по аналогии сделать сериализацию выборки из базы. Допустим, нужно сериализовать данные, которые можно вернуть конкретным запросом:
Код: sql
1.
select distinct top 10 UnitID, Name from tblUnit where ID>5 order by Name

Как их извлечь в пригодном для сериализации виде?
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38057740
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПервую строчку я не совсем понял. В ней вроде бы создается коллекция из 10и объектов. Если да, то мне не ясно, как по аналогии сделать сериализацию выборки из базы. Допустим, нужно сериализовать данные, которые можно вернуть конкретным запросом:
Код: sql
1.
select distinct top 10 UnitID, Name from tblUnit where ID>5 order by Name

Как их извлечь в пригодном для сериализации виде?
XML/ORM
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058028
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется нашел нужное направление , но возник вопрос: разве студия не должна сама генерить классы сущностей? Где-то слышал, что должна.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058287
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если бы это не Antonariy я бы подумал что троль
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058382
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чо? Я просто в вопросе не в зуб ногой, а сделать нужно 1) внезапно 2) без отрыва от основной деятельности. Вот и мечусь как курица без головы.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058405
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПервую строчку я не совсем понял. В ней вроде бы создается коллекция из 10и объектов. Если да, то мне не ясно, как по аналогии сделать сериализацию выборки из базы. Допустим, нужно сериализовать данные, которые можно вернуть конкретным запросом:
Код: sql
1.
select distinct top 10 UnitID, Name from tblUnit where ID>5 order by Name

Как их извлечь в пригодном для сериализации виде?
Ты издеваешься? Получи свою выборку в виде коллекции IEnumerable<T> и воспользуйся кодом, который я тебе написал. Или тебе нужно рассказать, как обратиться к базе и получить коллекцию?
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058486
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИли тебе нужно рассказать, как обратиться к базе и получить коллекцию?Совершенно верно. Можно не рассказывать, а тынц дать. Кроме ADODB я же ничего не юзал, до сих пор его более чем хватало. select for xml -> domdocument -> xsl и до свидания. Однако сейчас нужно генерить много разнообразного json'а, и заниматься этим с помощью xsl... в общем грустно. Сделать <Serializable> класс и навтыкать в нужные свойства результаты выборок, такой был план.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38058611
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСовершенно верно
Entity Framework Step by Step
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38059900
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyСовершенно верно
Entity Framework Step by Step Отличный хеловорлд, для тупых, люблю такие. Все получилось.

А как быть, если нужно сделать выборку заранее неизвестного типа, название которого приходит в текстовой переменной?
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060291
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА как быть, если нужно сделать выборку заранее неизвестного типа, название которого приходит в текстовой переменной?
Я ж тебе вначале пример привёл как-раз на анонимном типе :)
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060320
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyА как быть, если нужно сделать выборку заранее неизвестного типа, название которого приходит в текстовой переменной?
Я ж тебе вначале пример привёл как-раз на анонимном типе :)
я так понял он хочет имя таблицы в строковой переменной передавать. Тогда непонятно зачем вообще орм для такого, хотя наверняка можно извратиться с рефлексией
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060343
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyА как быть, если нужно сделать выборку заранее неизвестного типа, название которого приходит в текстовой переменной?
Я ж тебе вначале пример привёл как-раз на анонимном типе :)Слишком уж анонимном. Не ясно, как в этом примере таблицу задать.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060368
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местный король ДелфейМСУпропущено...

Я ж тебе вначале пример привёл как-раз на анонимном типе :)
я так понял он хочет имя таблицы в строковой переменной передавать. Да.

Местный король ДелфейТогда непонятно зачем вообще орм для такогоЧтобы не копипастить практически идентичный код для однотипных объектов.

А вообще я готов рассмотреть все способы превращения набора записей в json. Кроме xsl и цикла по записям.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060384
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЧтобы не копипастить практически идентичный код для однотипных объектов.В смысле для этого — таблицы в переменной. А орм для сериализации, это единственное, что пришло в голову. Не считая линка, который к тому же предлагает классы таблиц руками пилить.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060392
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string json = new JavaScriptSerializer().Serialize(myDataTable.ToDynamic());



ToDynamic
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public static class DataTableExtensions
{
    public static List<dynamic> ToDynamic(this DataTable dt)
    {
        var dynamicDt = new List<dynamic>();
        foreach (DataRow row in dt.Rows)
        {
            dynamic dyn = new ExpandoObject();
            foreach (DataColumn column in dt.Columns)
            {
                var dic = (IDictionary<string, object>)dyn;
                dic[column.ColumnName] = row[column];
                dynamicDt.Add(dyn);
            }
        }
        return dynamicDt;
    }
}

...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060783
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как этим пользоваться? Скопипастил я класс, получил datatable:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public DataTable GetDataTable(Engine mEngine, string queryString, string tableName)
{
	DataSet ds = new DataSet();
	SqlDataAdapter adapter = new SqlDataAdapter(queryString, mEngine.DataService.Setup.ConnectionString);
	adapter.Fill(ds, tableName);
	ds.Tables(0).Load(ds.CreateDataReader(), LoadOption.OverwriteChanges);
	return ds.Tables(0);
}

myDataTable = GetDataTable(mEngine, "select CatalogueID, Name from tblCatalogue", "tblCatalogue");

Откуда у myDataTable возьмется ToDynamic?
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060877
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyОткуда у myDataTable возьмется ToDynamic?
екстеншен-метод в спойлере
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060898
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местный король ДелфейAntonariyОткуда у myDataTable возьмется ToDynamic?
екстеншен-метод в спойлере
Ёпрст, я не слепой.
Я просто не понимаю, как этот экстенш прикрутить к DataTable.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38060899
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снят, внезапно доперло.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38068711
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

это у вас в продакшине екстеншин с ошибкой?
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38070458
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно ошибка, ее исправил, но ведь и результат ни к селу.
Нужно [{"id":1,"name":2}], а получается [[{"Key":"id","Value":1},{"Key":"name","Value":2}]]
А еще зачем-то сериализует null.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38070711
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМестный король Делфейпропущено...

я так понял он хочет имя таблицы в строковой переменной передавать. Да.

Местный король ДелфейТогда непонятно зачем вообще орм для такогоЧтобы не копипастить практически идентичный код для однотипных объектов.Переосмыслил это. Разделил "практически" и идентичный код, получил что хотел таким образом:

Код: vbnet
1.
2.
3.
4.
Dim items = From v In ef.tblCatalogue
            Where v.CatalogueID = 2
            Select v.CatalogueID, v.ClassificatorID, v.Code, v.Name
Dim json As String = New JavaScriptSerializer().Serialize(items.ToList())


Осталось как-то избавиться от null'ов.
...
Рейтинг: 0 / 0
SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
    #38070763
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Избавился от null'ов и прочих неугодных значений так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Private Function Serialize2JSON(ByVal objInput As Object) As String
        Dim jss As New JavaScriptSerializer()
        Return Regex.Replace(jss.Serialize(objInput), "(,?)""\w+"":(null|false|0|"""")(,?)(\}?)", New MatchEvaluator(AddressOf ReplaceNull))
    End Function

    Public Function ReplaceNull(ByVal m As Match) As String
        If Len(m.Groups(4).Value) > 0 Then
            Return m.Groups(4).Value
        Else
            Return m.Groups(1).Value
        End If
    End Function
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 1 из 4
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SELECT id, name -> DataContractJsonSerializer -> [{"id":1,"name":2}]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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