扱う言語が多くなってきて、特定の処理を思い出せずにイライラする事が頻発しています。そこで自分が使う各言語でスニペット付きでまとめる事にしました。第一弾は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('utf_8')(sys.stdout) import simplejson data = { 'items':[ {'name':'iPhone', 'price':50000}, {'name':'macbook', 'price':100000}, {'name':"マクド", 'price':100}, ]} text = simplejson.dumps(data) # encode copy = simplejson.loads(text) # decode print "data = " + str(data) print "text = " + text print "copy = " + str(copy) for item in copy['items']: print item["name"] |
perl
perlはJSON.pm。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use JSON; my $data = {'items' => [ {'name' => 'iPhone', 'price' => 50000}, {'name' => 'macbook', 'price' => 100000}, {'name' => 'マクド', 'price' => 100}, ]}; my $text = encode_json($data); my $copy = decode_json($text); print "data = " . dump($data), "\n"; print "text = " . $text, "\n"; print "copy = " . dump($copy), "\n"; for my $item (@{ $copy->{"items"} }) { print $item->{"name"}, "\n"; } |
php
phpは5.2系以降で標準でphp-jsonライブラリが組み込まれているようです。それ以前の場合はpeclで別途インストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/usr/bin/php < ?php $data = array('items' => array( array('name' => 'iPhone', 'price' => 50000), array('name' => 'macbook', 'price' => 100000), array('name' => 'マクド', 'price' => 100) ) ); $text = json_encode($data); $copy = json_decode($text, true); var_dump($data); print $text . "\n"; var_dump($copy); foreach ($copy["items"] as $item) { print $item["name"] . "\n"; } ?> |
as3
as3ではas3corelibを使います。
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 | package { import flash.display.Sprite; import com.adobe.serialization.json.JSON; public class JsonTest extends Sprite { function JsonTest() { var data:Object = { items: [ { name:"iPhone", price:50000 }, { name:"macbook", price:100000 }, { name:"マクド", price:100 } ] }; var text:String = JSON.encode(data); var copy:Object = JSON.decode(text); log(data); log(text); log(copy); for each (var item:Object in copy["items"]) { log(item["name"]); } } } } |
javascript
javascriptは色々方法があるようですが、僕はjson2.jsを使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <html>
<head>
<script type="text/javascript" src="json2.js"></script>
<script type="text/javascript">
var data = { 'items':[
{'name':'iPhone', 'price':50000},
{'name':'macbook', 'price':100000},
{'name':'マクド', 'price':100},
]};
var text = JSON.stringify(data); // encode
var copy = JSON.parse(text); // decode
alert(data);
alert(text);
alert(copy);
for (var i in copy["items"]) {
alert(copy["items"][i]["name"]);
}
</script>
</head>
</html> |
どの言語もほぼ同じように処理できていて、JSONは連想配列が使える言語と相性が本当にいいですね。中でもjavascriptがやっぱり一番簡単に扱えてる気がします。perlはリファレンスの扱いが面倒で、phpはarrayにシンタックスシュガーを用意したらもっと良い言語になると思いました。
あと、json.orgの情報量が凄いので要ブックマーク!




