<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>taichino.com &#187; json</title>
	<atom:link href="http://taichino.com/tag/json/feed" rel="self" type="application/rss+xml" />
	<link>http://taichino.com</link>
	<description>永遠のネバーランド</description>
	<lastBuildDate>Sat, 04 Feb 2012 13:33:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>pythonとperlとphpとas3とjavascriptでJSON</title>
		<link>http://taichino.com/programming/778</link>
		<comments>http://taichino.com/programming/778#comments</comments>
		<pubDate>Sun, 09 Aug 2009 01:50:39 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=778</guid>
		<description><![CDATA[扱う言語が多くなってきて、特定の処理を思い出せずにイライラする事が頻発しています。そこで自分が使う各言語でスニペット付きでまとめる事にしました。第一弾はJSONの扱いです。連想配列をJSONにencodeして、再度decodeという基本的な流れを書きました。 python 2.6系だとJSONが標準で組み込まれてるらしいんですが、手元は2.5系なのでsimplejsonを使っています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, codecs sys.stdout = codecs.getwriter&#40;'utf_8'&#41;&#40;sys.stdout&#41; &#160; import simplejson &#160; data = &#123; 'items':&#91; &#123;'name':'iPhone', 'price':50000&#125;, &#123;'name':'macbook', 'price':100000&#125;, &#123;'name':&#34;マクド&#34;, 'price':100&#125;, &#93;&#125; text = simplejson.dumps&#40;data&#41; # encode [...]]]></description>
			<content:encoded><![CDATA[<p>扱う言語が多くなってきて、特定の処理を思い出せずにイライラする事が頻発しています。そこで自分が使う各言語でスニペット付きでまとめる事にしました。第一弾はJSONの扱いです。連想配列をJSONにencodeして、再度decodeという基本的な流れを書きました。</p>
<p><span id="more-778"></span></p>
<p><strong>python</strong><br />
2.6系だとJSONが標準で組み込まれてるらしいんですが、手元は2.5系なので<a href="http://pypi.python.org/pypi/simplejson">simplejson</a>を使っています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">codecs</span>
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span> = <span style="color: #dc143c;">codecs</span>.<span style="color: black;">getwriter</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf_8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> simplejson
&nbsp;
data = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'items'</span>:<span style="color: black;">&#91;</span>
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">'iPhone'</span>,  <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">50000</span><span style="color: black;">&#125;</span>,
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">'macbook'</span>, <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">100000</span><span style="color: black;">&#125;</span>,
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">&quot;マクド&quot;</span>,  <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">100</span><span style="color: black;">&#125;</span>,
<span style="color: black;">&#93;</span><span style="color: black;">&#125;</span>
text = simplejson.<span style="color: black;">dumps</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># encode</span>
<span style="color: #dc143c;">copy</span> = simplejson.<span style="color: black;">loads</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># decode</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;data = &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;text = &quot;</span> + text
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;copy = &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">copy</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'items'</span><span style="color: black;">&#93;</span>:
  <span style="color: #ff7700;font-weight:bold;">print</span> item<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;name&quot;</span><span style="color: black;">&#93;</span></pre></td></tr></table></div>

<p><strong>perl</strong><br />
perlはJSON.pm。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dump</span> <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">dump</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> JSON<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$data</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'items'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#91;</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">50000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>               
<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$text</span> <span style="color: #339933;">=</span> encode_json<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$copy</span> <span style="color: #339933;">=</span> decode_json<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;data = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000066;">dump</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;text = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$text</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;copy = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000066;">dump</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$copy</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$item</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$copy</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">&quot;items&quot;</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #0000ff;">$item</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">&quot;name&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>php</strong><br />
phpは5.2系以降で標準でphp-jsonライブラリが組み込まれているようです。それ以前の場合はpeclで別途インストールします。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/php
</span><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'items'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">50000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$copy</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$text</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$copy</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$copy</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">print</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>as3</strong><br />
as3では<a href="http://code.google.com/p/as3corelib/">as3corelib</a>を使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> com<span style="color: #000066; font-weight: bold;">.</span>adobe<span style="color: #000066; font-weight: bold;">.</span>serialization<span style="color: #000066; font-weight: bold;">.</span>json<span style="color: #000066; font-weight: bold;">.</span>JSON<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> JsonTest <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #339966; font-weight: bold;">function</span> JsonTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = <span style="color: #000000;">&#123;</span>
                items<span style="color: #000066; font-weight: bold;">:</span> <span style="color: #000000;">&#91;</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;iPhone&quot;</span><span style="color: #000066; font-weight: bold;">,</span>  price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">50000</span>  <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">,</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;macbook&quot;</span><span style="color: #000066; font-weight: bold;">,</span> price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">100000</span> <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">,</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;マクド&quot;</span><span style="color: #000066; font-weight: bold;">,</span>  price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">100</span>    <span style="color: #000000;">&#125;</span>
                <span style="color: #000000;">&#93;</span>
            <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">text</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = JSON<span style="color: #000066; font-weight: bold;">.</span>encode<span style="color: #000000;">&#40;</span><span style="color: #004993;">data</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">copy</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = JSON<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">decode</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">data</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">copy</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #0033ff; font-weight: bold;">each</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> item<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> <span style="color: #0033ff; font-weight: bold;">in</span> <span style="color: #004993;">copy</span><span style="color: #000000;">&#91;</span><span style="color: #990000;">&quot;items&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
                <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>item<span style="color: #000000;">&#91;</span><span style="color: #990000;">&quot;name&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>javascript</strong><br />
javascriptは色々方法があるようですが、僕は<a href="https://github.com/douglascrockford/JSON-js">json2.js</a>を使っています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">&lt;html&gt;
  &lt;head&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;json2.js&quot;&gt;&lt;/script&gt;
    <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
      <span style="color: #003366; font-weight: bold;">var</span> data <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'items'</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">50000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">100000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
      <span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
      <span style="color: #003366; font-weight: bold;">var</span> text <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">stringify</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #006600; font-style: italic;">// encode</span>
      <span style="color: #003366; font-weight: bold;">var</span> copy <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      <span style="color: #006600; font-style: italic;">// decode</span>
&nbsp;
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>copy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #000066; font-weight: bold;">in</span> copy<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>copy<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;name&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&lt;/head&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>どの言語もほぼ同じように処理できていて、JSONは連想配列が使える言語と相性が本当にいいですね。中でもjavascriptがやっぱり一番簡単に扱えてる気がします。perlはリファレンスの扱いが面倒で、phpはarrayにシンタックスシュガーを用意したらもっと良い言語になると思いました。</p>
<p>あと、<a href="http://www.json.org/">json.org</a>の情報量が凄いので要ブックマーク！</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/778/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpでjson2xml</title>
		<link>http://taichino.com/programming/443</link>
		<comments>http://taichino.com/programming/443#comments</comments>
		<pubDate>Wed, 24 Jun 2009 06:03:03 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=443</guid>
		<description><![CDATA[phpでjsonからxmlに変換したかったのですが、何故かちょっと調べた感じで出てこなかったので書いてみました。でもJSONの仕様をあんまり把握してないので、間違ってたらすいません。 &#60; ?php require_once&#40;'XML/Util.php'&#41;; &#160; /** * @param $obj 変換する連想配列 * @param $root 補完するルートタグ * @param $encoding 出力するXMLのエンコーディング * @return DOMオブジェクト */ function json2xml&#40;$obj, $root=null, $encoding=&#34;&#34;&#41; &#123; $body = $root ? _tag&#40;$root, _json2xml&#40;$obj, $encoding&#41;&#41; : _json2xml&#40;$obj, $encoding&#41;; $dom = DomDocument::loadXML&#40;$body&#41;; if &#40;$encoding&#41; $dom-&#62;encoding = $encoding; return $dom; &#125; &#160; function _json2xml&#40;$obj, $encoding=&#34;&#34;&#41; &#123; $result = [...]]]></description>
			<content:encoded><![CDATA[<p>phpでjsonからxmlに変換したかったのですが、何故かちょっと調べた感じで出てこなかったので書いてみました。でもJSONの仕様をあんまり把握してないので、間違ってたらすいません。</p>
<p><span id="more-443"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'XML/Util.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * @param $obj      変換する連想配列
 * @param $root     補完するルートタグ
 * @param $encoding 出力するXMLのエンコーディング
 * @return          DOMオブジェクト
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #339933;">,</span> <span style="color: #000088;">$root</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encoding</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$root</span> ? _tag<span style="color: #009900;">&#40;</span><span style="color: #000088;">$root</span><span style="color: #339933;">,</span> _json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encoding</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> _json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encoding</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$dom</span>  <span style="color: #339933;">=</span> DomDocument<span style="color: #339933;">::</span><span style="color: #004000;">loadXML</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$encoding</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">encoding</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$encoding</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$dom</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> _json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encoding</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">each</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$tagName</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^\d+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'array_item'</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$key</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">gettype</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;object&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;array&quot;</span><span style="color: #339933;">:</span>
      <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> _tag<span style="color: #009900;">&#40;</span><span style="color: #000088;">$tagName</span><span style="color: #339933;">,</span> _json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #339933;">,</span> <span style="color: #000088;">$encoding</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
<span style="color: #666666; font-style: italic;">#      $result .= _tag($tagName, htmlentities($val, ENT_QUOTES, $encoding));
</span>      <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> _tag<span style="color: #009900;">&#40;</span><span style="color: #000088;">$tagName</span><span style="color: #339933;">,</span> XML_Util<span style="color: #339933;">::</span><span style="color: #004000;">replaceEntities</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> _tag<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;&lt; <span style="color: #006699; font-weight: bold;">$name</span>&gt;<span style="color: #006699; font-weight: bold;">$value</span> &lt; /<span style="color: #006699; font-weight: bold;">$name</span>&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>使い方はこんな感じでしょうか。<br />
jsonっていうか、連想配列がxmlになるのは良いですね。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'json2xml.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
  <span style="color: #0000ff;">&quot;name&quot;</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;taichino &quot;</span><span style="color: #339933;">,</span>
  <span style="color: #0000ff;">&quot;yomi&quot;</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;たいちーの&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #0000ff;">&quot;age&quot;</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">25</span><span style="color: #339933;">,</span>
  <span style="color: #0000ff;">&quot;skill&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
               <span style="color: #0000ff;">&quot;php&quot;</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span>
               <span style="color: #0000ff;">&quot;perl&quot;</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span>
               <span style="color: #0000ff;">&quot;python&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
  <span style="color: #0000ff;">&quot;favorite&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;carbon emacs&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;tramp&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;cent os&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dom</span> <span style="color: #339933;">=</span> json2xml<span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;utf-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">formatOutput</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">saveXML</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><strong>[追記]2009/06/24</strong><br />
encodeの受け渡しが出来ておらず、日本語を上手く処理できてなかったので、修正しました。本文修正済みです。</p>
<p><strong>[追記]2009/06/29</strong><br />
文字参照の置換にhtmlentitiesを使用していましたが、標準でDomDocumentが対応していない文字まで置換されて、その結果エラーが発生していましたので、XML_Util::replaceEntitiesを用いた置換に修正しました。本文修正済みです。コメント化して元のコードは残してあります。修正に伴い、pearパッケージの<a href="http://pear.php.net/package/XML_Util">XML_Util</a>のインストールが必要になりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/443/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

