<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Ctalyst DBIx вывод в JSON</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html</link>
    <description>&lt;br&gt; Подскажите пожалуйста решение для задачки: &lt;br&gt;&lt;br&gt;Дано: DBIx shema DB&lt;br&gt;      View TT&lt;br&gt;      View JSON&lt;br&gt;&lt;br&gt;Надо: передать данные из DBIx model(&apos;DB::Table&apos;) в View::JSON&lt;br&gt;      или другим способом из DBIx в JSON. &lt;br&gt;      &lt;br&gt;&lt;br&gt;Пробую скормить результат в JSON - ругается:&lt;br&gt;&lt;br&gt;Caught exception in TM::View::JSON-&amp;gt;process &quot;encountered object &apos;TM::Model::DB::Table=HASH(0x56cce00)&apos;, but neither allow_blessed nor convert_blessed settings are enabled&lt;br&gt;&lt;br&gt;Делается все для ajax запросов. &lt;br&gt;&lt;br&gt;Буду очень признателен, если кто нибудь оставит контакт для консультации. &lt;br&gt;Спасибо!&lt;br&gt;</description>

<item>
    <title>Ctalyst DBIx вывод в JSON (Azudim)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#8</link>
    <pubDate>Mon, 28 Feb 2011 09:54:18 GMT</pubDate>
    <description>Проблема с кодировкой решилась&lt;br&gt;-------------&lt;br&gt;package TM::Controller::Ajax;&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use parent &apos;Catalyst::Controller&apos;;&lt;br&gt;&lt;br&gt;sub index :Path :Args &#123;&lt;br&gt;    my($self, $c, &#064;args) = &#064;_;&lt;br&gt;my $rs = $c-&amp;gt;model(&apos;DB::Firms&apos;);&lt;br&gt;my $firms = $rs-&amp;gt;search(undef,&lt;br&gt;&#123; &lt;br&gt;&apos;+select&apos;  =&amp;gt; &#091; &apos;people.nick_name&apos;,&apos;people.s_name&apos; &#093;,&lt;br&gt;join =&amp;gt; &apos;people&apos;  &#125;&lt;br&gt;);&lt;br&gt;### Исходные данные - список задействованных столбцов&lt;br&gt;my $source = $rs-&amp;gt;result_source;&lt;br&gt;my &#064;column_names = $source-&amp;gt;columns;&lt;br&gt;#&lt;br&gt;&lt;br&gt;my (&#064;data, &#037;json);&lt;br&gt;while (my $f = $firms-&amp;gt;next) &#123;&lt;br&gt;my &#037;row;&lt;br&gt;foreach my $col (&#064;column_names) &#123;&lt;br&gt;$row&#123;$col&#125; = $f-&amp;gt;$col;&lt;br&gt;Encode::from_to($row&#123;$col&#125;, &apos;cp1251&apos;, &apos;utf8&apos;);# кодируем в cp1251, потому что в базе лежит в cp1251&lt;br&gt;&#125;&lt;br&gt;push &#064;data,&#092;&#037;row;&lt;br&gt;    &#125;&lt;br&gt;$json&#123;data&#125; = &#092;&#064;data;&lt;br&gt;$json&#123;result&#125; = &quot;ok&quot;;&lt;br&gt;$c-&amp;gt;stash-&amp;gt;&#123;json&#125; = &#092;&#037;json;&lt;br&gt;    $c-&amp;gt;forward(&apos;View::JSON&apos;);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (Azudim)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#7</link>
    <pubDate>Sun, 27 Feb 2011 10:14:09 GMT</pubDate>
    <description>Вот так уже почти получилось - JSON не ругается, но кодировка где то недоделана.&lt;br&gt;=========================================&lt;br&gt;package TM::Controller::Firm;&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use parent &apos;Catalyst::Controller&apos;;&lt;br&gt;&lt;br&gt;sub index :Path :Args(0) &#123;&lt;br&gt;    my ( $self, $c ) = &#064;_;&lt;br&gt;my $time = &quot;Текущее время:&quot;.localtime;&lt;br&gt;# ЗАпрос в &lt;br&gt;my $rs = $c-&amp;gt;model(&apos;DB::Firm&apos;);&lt;br&gt;my $firms = $rs-&amp;gt;search(undef,&lt;br&gt;&#123; &lt;br&gt;&apos;+select&apos;  =&amp;gt; &#091; &apos;people.nick_name&apos;,&apos;people.s_name&apos; &#093;,&lt;br&gt;join =&amp;gt; &apos;people&apos;  &#125;&lt;br&gt;);&lt;br&gt;my (&#064;data, &#037;json);&lt;br&gt;while (my $f = $firms-&amp;gt;next) &#123;&lt;br&gt;my &#037;row;&lt;br&gt;$row&#123;short_name&#125; = $f-&amp;gt;short_name;&lt;br&gt;push &#064;data,&#092;&#037;row;&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;#foreach my $val (&#064;data) &#123; #print &quot;&#092;n data val: $val&quot;;&#125;&lt;br&gt;$json&#123;rettext&#125; = &quot;good&quot;;&lt;br&gt;$json&#123;data&#125; = &#092;&#064;data;&lt;br&gt;$c-&amp;gt;stash-&amp;gt;&#123;json&#125; = &#092;&#037;json;&lt;br&gt;    $c-&amp;gt;forward(&apos;View::JSON&apos;);&lt;br&gt;&#125;&lt;br&gt;1;&lt;br&gt;==============================&lt;br&gt;  Вывод:&lt;br&gt;&#123;&lt;br&gt;   &quot;json&quot; : &#123;&lt;br&gt;      &quot;data&quot; : &#091;&lt;br&gt;         &#123;&lt;br&gt;            &quot;short_name&quot; : &quot;??????-31&quot;&lt;br&gt;         &#125;,&lt;br&gt;         &#123;&lt;br&gt;            &quot;short_name&quot; : &quot;???????&quot;&lt;br&gt;         &#125;,&lt;br&gt;     </description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (Azudim)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#6</link>
    <pubDate>Sat, 26 Feb 2011 15:48:41 GMT</pubDate>
    <description>package TM::Controller::Firm;&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use parent &apos;Catalyst::Controller&apos;;&lt;br&gt;&lt;br&gt;sub index :Path :Args(0) &#123;&lt;br&gt;my ( $self, $c ) = &#064;_;&lt;br&gt; &lt;br&gt;        # Выводим данные из схемы: join из двух таблиц, связи прописаны в схеме.&lt;br&gt;        my $rs = $c-&amp;gt;model(&apos;DB::Firm&apos;);&lt;br&gt;my &#064;firms = $rs-&amp;gt;search(undef,&lt;br&gt;&#123; &lt;br&gt;&apos;+select&apos;  =&amp;gt; &#091; &apos;people.nick_name&apos;,&apos;people.s_name&apos; &#093;,&lt;br&gt;join =&amp;gt; &apos;people&apos;  &#125;&lt;br&gt;);&lt;br&gt;        $c-&amp;gt;stash-&amp;gt;&#123;json&#125; = &#092;&#064;firms;&lt;br&gt;$c-&amp;gt;forward(&apos;View::JSON&apos;);&lt;br&gt;&lt;br&gt;        # Если хотим вывести в Template Toolkit (View:TT)&lt;br&gt;        # $c-&amp;gt;stash(template =&amp;gt; &apos;firm/firm_list.tt&apos;);&lt;br&gt;&#125;&lt;br&gt;1;&lt;br&gt;&lt;br&gt;===================== firm_list.tt ===========&lt;br&gt;&#091;&#037; WRAPPER tpl/header.tt title = c.config.name ; END &#037;&#093;&lt;br&gt;&#091;&#037; FOREACH firm IN firms -&#037;&#093;&lt;br&gt;  &amp;lt;tr&amp;gt;&lt;br&gt;&amp;lt;td&amp;gt;&#091;&#037; firm.id &#037;&#093;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;lt;td&amp;gt;&#091;&#037; firm.short_name &#037;&#093;&amp;lt;/td&amp;gt;&lt;br&gt;&amp;lt;td&amp;gt;&#091;&#037; firm.people.s_name &#037;&#093;&#091;&#091;&#037; firm.people.nick_name &#037;&#093;&#093;&amp;lt;/td&amp;gt;&lt;br&gt;  &amp;lt;/tr&amp;gt;&lt;br&gt;&#091;&#037; END -&#037;&#093;&lt;br&gt;================================================&lt;br&gt;&lt;br&gt;Если отдаем &#092;&#064;firms в View::JSON - проблема с сериализацией bless&apos;нутых об</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (sm00th1980)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#5</link>
    <pubDate>Sat, 26 Feb 2011 10:24:14 GMT</pubDate>
    <description>давай этот код в студию - попробую вспомнить былое на великом и могучем perl :)&lt;br&gt;</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (Azudim)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#4</link>
    <pubDate>Sat, 26 Feb 2011 10:04:14 GMT</pubDate>
    <description>&amp;gt; я так подозреваю что проблема вот в чём: &lt;br&gt;&amp;gt; ты получаешь рекорды из базы в виде объектов. А JSON-сериализатор ожидает на &lt;br&gt;&amp;gt; вход ассоциативный массив(по-моему в perl - это хешем называют).&lt;br&gt;&lt;br&gt;Да! =) &lt;br&gt;&lt;br&gt;&amp;gt; Ну так вот как ты получишь свой рекорд-объект - в котором в &lt;br&gt;&amp;gt; виде свойств будут колонки этого рекорда - сделай из него хеш &lt;br&gt;&amp;gt; и уже хеш скорми сериализатору. По идее должно прокатить. Но это &lt;br&gt;&amp;gt; по идее.&lt;br&gt;&lt;br&gt;Вот это то у меня и не получается сделать =( &lt;br&gt;</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (sm00th1980)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#3</link>
    <pubDate>Sat, 26 Feb 2011 09:41:35 GMT</pubDate>
    <description>&amp;gt;  Именно такой пример мне и нужен был, но боюсь с питона &lt;br&gt;&amp;gt; (Django?) на Каталист не смогу перевести. У Каталиста тоже свой ORM &lt;br&gt;&amp;gt; (DBIx::Class), и с выводом в шаблонизатор проблем нет, но шаблонизатор работает &lt;br&gt;&amp;gt; с данными из базы как объектами и методами, а Json модуль &lt;br&gt;&amp;gt; нет.&lt;br&gt;&amp;gt; P.S. Надеюсь со временем осилить Django, обращусь за консультацией =) &lt;br&gt;&lt;br&gt;я так подозреваю что проблема вот в чём:&lt;br&gt;ты получаешь рекорды из базы в виде объектов. А JSON-сериализатор ожидает на вход ассоциативный массив(по-моему в perl - это хешем называют).&lt;br&gt;&lt;br&gt;Ну так вот как ты получишь свой рекорд-объект - в котором в виде свойств будут колонки этого рекорда - сделай из него хеш и уже хеш скорми сериализатору. По идее должно прокатить. Но это по идее.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (Azudim)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#2</link>
    <pubDate>Sat, 26 Feb 2011 09:25:41 GMT</pubDate>
    <description>&lt;br&gt; Именно такой пример мне и нужен был, но боюсь с питона (Django?) на Каталист не смогу перевести. У Каталиста тоже свой ORM (DBIx::Class), и с выводом в шаблонизатор проблем нет, но шаблонизатор работает с данными из базы как объектами и методами, а Json модуль нет.&lt;br&gt;&lt;br&gt;&lt;br&gt;P.S. Надеюсь со временем осилить Django, обращусь за консультацией =)&lt;br&gt; &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ctalyst DBIx вывод в JSON (sm00th1980)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7156.html#1</link>
    <pubDate>Sat, 26 Feb 2011 08:49:14 GMT</pubDate>
    <description>делал подобное но только на питоне - по нему могу проконсультировать.&lt;br&gt;&lt;br&gt;Но в целом подход был такой:&lt;br&gt;база данных подключалась через ORM(думаю для Perl тоже есть свой ORM) и уже построчно из таблицы данные конвертились в JSON и отдавались(тоже кстати для AJAX).&lt;br&gt;&lt;br&gt;Пример как раз можно глянуть тут:&lt;br&gt;http://www.youtube.com/watch?v=FcB8_s-_Iz8&lt;br&gt;</description>
</item>

</channel>
</rss>
