<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Красиво собрать массив из глубин JSON</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html</link>
    <description>Всем привет!&lt;br&gt;Ломаю голову..&lt;br&gt;&lt;br&gt;Есть JSON:&lt;br&gt;print Dumper($json);&lt;br&gt;$VAR1 = &#091;&lt;br&gt; &#123;&lt;br&gt;  &quot;id&quot; : &quot;1&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name1&quot;&lt;br&gt; &#125;,&lt;br&gt; &#123;&lt;br&gt;  &quot;id&quot; : &quot;2&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name2&quot;&lt;br&gt; &#125;,&lt;br&gt; &#123;&lt;br&gt;  &quot;id&quot; : &quot;3&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name3&quot;&lt;br&gt; &#125;&lt;br&gt;&#093;&lt;br&gt;Список может быть большой&lt;br&gt;&lt;br&gt;Их него нужно вытащить все элементы &quot;name&quot; и запихнуть их в одномерный массив: &#064;names = (&quot;Name1&quot;, &quot;Name2&quot;, &quot;Name3&quot;)&lt;br&gt;&lt;br&gt;Первое что приходит в голову:&lt;br&gt;for my $elem ( &#064;$json )&#123;&lt;br&gt; push &#064;names, $elem-&amp;gt;&#123;&quot;name&quot;&#125;;&lt;br&gt;&#125;&lt;br&gt;print Dumper(&#064;names);&lt;br&gt;&lt;br&gt;Ну, имеем то, что хотели:&lt;br&gt;#Name1Name2Name3&lt;br&gt;&lt;br&gt;ВОПРОС&lt;br&gt;Есть способ получить желаемое в одно касание, без перебора? По типу, как взять 1 элемент:&lt;br&gt;$name = $json-&amp;gt;&#091;0&#093;-&amp;gt;&#123;&quot;name&quot;&#125;;&lt;br&gt;так хотелось бы сразу все &quot;name&quot;&lt;br&gt;&lt;br&gt;Спасибо.&lt;br&gt;</description>

<item>
    <title>Красиво собрать массив из глубин JSON (Шёл мимо)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#11</link>
    <pubDate>Sat, 10 Aug 2019 06:34:32 GMT</pubDate>
    <description>Наверное ответ был на этот пост&lt;br&gt;</description>
</item>

<item>
    <title>re: не взлетит (Шёл мимо)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#10</link>
    <pubDate>Sat, 10 Aug 2019 06:18:57 GMT</pubDate>
    <description>&amp;gt; не взлетит &lt;br&gt;&lt;br&gt;&#091;CODE&#093;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use JSON;&lt;br&gt;use Data::Dumper;&lt;br&gt;use Benchmark &apos;cmpthese&apos;;&lt;br&gt;&lt;br&gt;my $json_text = &apos;&#091;&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;1&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name1&quot;&lt;br&gt;&#125;,&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;2&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name2&quot;&lt;br&gt;&#125;,&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;3&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name3&quot;&lt;br&gt;&#125;&#093;&apos;&lt;br&gt;;&lt;br&gt;&lt;br&gt;#my $json = JSON-&amp;gt;new-&amp;gt;decode($json_text);&lt;br&gt;my $json = decode_json($json_text);&lt;br&gt;&lt;br&gt;print Dumper($json);&lt;br&gt;&lt;br&gt;sub mapng &#123;&lt;br&gt;    my &#064;names = map &#123; $_-&amp;gt;&#123;name&#125; &#125; &#064;&#123;$json&#125;;&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;sub modif &#123;&lt;br&gt;    push my &#064;names, $_-&amp;gt;&#123;name&#125; for &#064;&#123;$json&#125;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;sub cycle &#123;&lt;br&gt;    for ( &#064;&#123;$json&#125; ) &#123;&lt;br&gt;        push my &#064;names, $_-&amp;gt;&#123;name&#125;;&lt;br&gt;    &#125;&lt;br&gt;&#125;&lt;br&gt;sub ptext &#123;&lt;br&gt;    my &#064;names = ($_&#091;0&#093; =~ /^&#092;s*+&quot;name&quot; *+: *+&quot;(&#091;^&quot;&#093;*+)&quot;/mg);&lt;br&gt;#print Dumper(&#064;names);&lt;br&gt;&#125;&lt;br&gt;#ptext($json_text);&lt;br&gt;&lt;br&gt;cmpthese(&lt;br&gt;  -1,&lt;br&gt;  &#123;&lt;br&gt;    &apos;mapng&apos; =&amp;gt; sub &#123; mapng($json) &#125;,&lt;br&gt;    &apos;modif&apos; =&amp;gt; sub &#123; modif($json) &#125;,&lt;br&gt;    &apos;cycle&apos; =&amp;gt; sub &#123; cycle($json) &#125;,&lt;br&gt;    &apos;ptext&apos; =&amp;gt; sub &#123; ptext($json_text) &#125;,&lt;br&gt;  &#125;&lt;br&gt;);&lt;br&gt;__END__&lt;br&gt;&#091;/CODE&#093;&lt;br&gt;ptext  92781/s    --  -63&#037;  -67&#037;  -67&#037;&lt;br&gt;mapng 251601/s  171&#037;    --  -11&#037;  -12&#037;&lt;br&gt;cycle 28</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#9</link>
    <pubDate>Sat, 09 Mar 2019 15:31:25 GMT</pubDate>
    <description>дело было вечером, делать было нечего,&lt;br&gt;было скучно..&lt;br&gt;&lt;br&gt;вспомнил бородатый анекдот дневник джигита (абрека),&lt;br&gt;&lt;br&gt;захотел вернуться к этому и выяснить, что быстрее работает,&lt;br&gt;потому как map тоже является циклом, только хитрозаточенным,&lt;br&gt;в отличии от for (foreach) и, думаю, не очень его быстрее&lt;br&gt;&lt;br&gt;и чтобы хейтеры (не путать с хипстерами) не начали своё любимое&lt;br&gt;&quot;пруф или трепло&quot;, решил - хайпанём, немножечко? ))&lt;br&gt;&lt;br&gt;вот proof, сиречь доказательство&lt;br&gt;&#091;code&#093;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;use JSON;&lt;br&gt;use Data::Dumper;&lt;br&gt;use Benchmark &apos;cmpthese&apos;;&lt;br&gt;&lt;br&gt;&lt;br&gt;my $json_text = &apos;&#091;&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;1&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name1&quot;&lt;br&gt;&#125;,&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;2&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name2&quot;&lt;br&gt;&#125;,&lt;br&gt;&#123;&lt;br&gt;  &quot;id&quot; : &quot;3&quot;,&lt;br&gt;  &quot;name&quot; : &quot;Name3&quot;&lt;br&gt;&#125;&#093;&apos;&lt;br&gt;;&lt;br&gt;&lt;br&gt;#my $json = JSON-&amp;gt;new-&amp;gt;decode($json_text);&lt;br&gt;my $json = decode_json($json_text);&lt;br&gt;&lt;br&gt;print Dumper($json);&lt;br&gt;&lt;br&gt;sub mapng &#123;&lt;br&gt;    my &#064;names = map &#123; $_-&amp;gt;&#123;name&#125; &#125; &#064;&#123;$json&#125;;&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;sub modif &#123;&lt;br&gt;    push my &#064;names, $_-&amp;gt;&#123;name&#125; for &#064;&#123;$json&#125;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;sub cycle &#123;&lt;br&gt;    for ( &#064;&#123;$json&#125; ) &#123;&lt;br&gt;        push my &#064;names, $_-&amp;gt;&#123;na</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#8</link>
    <pubDate>Wed, 06 Mar 2019 07:31:07 GMT</pubDate>
    <description>&amp;gt; еще до кучи: &lt;br&gt;&amp;gt; push &#064;names, $_-&amp;gt;&#123;name&#125; for &#064;$json; &lt;br&gt;&lt;br&gt;в данном случае for используется как модификатор, но суть дела от этого не меняется&lt;br&gt;и это фактически, да и практически ничем не отличается от классического перебора в цикле&lt;br&gt;&lt;br&gt;for ( &#064;&#123;$json&#125; ) &#123;&lt;br&gt;    push &#064;names, $_-&amp;gt;&#123;name&#125;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;написано короче,&lt;br&gt;но ещё не известно, что быстрей и лучше для понимания и восприятия&lt;br&gt;(в данном конкретном случае) ))&lt;br&gt;</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#7</link>
    <pubDate>Wed, 06 Mar 2019 07:20:14 GMT</pubDate>
    <description>&amp;gt; Без перебора только так. Регулярку не проверял.&lt;br&gt;&amp;gt; my &#064;names = $json_str =~ m/name&#091;&quot;&#092;s&#093;*:&#092;s*&quot;(&#091;^&quot;&#093;+)/g ; &lt;br&gt;&lt;br&gt;не взлетит&lt;br&gt;</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (erera22)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#6</link>
    <pubDate>Mon, 18 Feb 2019 17:44:10 GMT</pubDate>
    <description>еще до кучи:&lt;br&gt;push &#064;names, $_-&amp;gt;&#123;name&#125; for &#064;$json;&lt;br&gt;</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#5</link>
    <pubDate>Thu, 14 Feb 2019 10:53:00 GMT</pubDate>
    <description>Без перебора только так. Регулярку не проверял.&lt;br&gt;&lt;br&gt;my &#064;names = $json_str =~ m/name&#091;&quot;&#092;s&#093;*:&#092;s*&quot;(&#091;^&quot;&#093;+)/g ;&lt;br&gt;</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (GoldenCeylon)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#4</link>
    <pubDate>Mon, 11 Feb 2019 09:23:37 GMT</pubDate>
    <description>&amp;gt; print join(&quot;,&quot; , map&#123; $_-&amp;gt;&#123;name&#125;&#125; &#064;&#123;$json&#125;);&lt;br&gt;&lt;br&gt;Подитожу:&lt;br&gt;&#064;names = map&#123;$_-&amp;gt;&#123;name&#125;&#125; &#064;&#123;$json&#125;;&lt;br&gt;или&lt;br&gt;&#064;names = map&#123;$_-&amp;gt;&#123;name&#125;&#125; &#064;$json;&lt;br&gt;</description>
</item>

<item>
    <title>Красиво собрать массив из глубин JSON (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8156.html#3</link>
    <pubDate>Sun, 10 Feb 2019 02:06:30 GMT</pubDate>
    <description>&amp;gt; Всем привет!&lt;br&gt;&amp;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;Ok google!&lt;br&gt;Как сделать мне хорошо и красиво?&lt;br&gt;</description>
</item>

</channel>
</rss>
