feb19.jp

Nobuhiro Takahashi
Designer / Engineer

AS3でJSONを読みこむ

Flash CS4 Professionalからはメタデータが使えるらしい

JSONという形式のファイルをAS3で読み込んでアレコレしてみる場合のサンプルと解説です。

そもそもJSONとは何か。ざっくり言うと、基本的にはただのテキストデータで、XML的な感じで、JSONという形式の構文で書かれたファイルである、ということのようです。

たとえばXMLをFlashに読み込ませて、動的にテキストを作成するというような箇所の場合、たとえば下記のようなXMLを用意します。

news.xml
 
<data>
	<news>
		<id>0004</id>
		<date>2024.12.26</date>
		<title>月のウサギが搗(つ)いた!?ムーン鏡餅登場!</title>
		<description>月面基地で栽培されたもち米を使いました。普通のお餅よりもとても水溶性が高いので、お餅が喉に詰まる心配がありません。</description>
	</news>
	<news>
		<id>0003</id>
		<date>2024.12.12</date>
		<title>今年のクリスマスセール対象商品について</title>
		<description>今はやりのターコイズブルーメタリックカラーのワンピース型ボディースーツがなんと30%オフです。</description>
	</news>
</data>

これをJSON形式で書くと、以下のようになります。

news.json
 
[
	{
		"id" : "0004",
		"date" : "2024.12.26",
		"title" : "月のウサギが搗(つ)いた!?ムーン鏡餅登場!",
		"description" : "月面基地で栽培されたもち米を使いました。普通のお餅よりもとても水溶性が高いので、お餅が喉に詰まる心配がありません。"
	},
	{
		"id" : "0003",
		"date" : "2024.12.12",
		"title" : "今年のクリスマスセール対象商品について",
		"description" : "今はやりのターコイズブルーメタリックカラーのワンピース型ボディースーツがなんと30%オフです。"
	}
]

ActionScriptでいう「Object型」に非常に似た形のテキストデータになっています。

実は、もともとAdobeがリリースしたas3corelibというActionScript3.0用のライブラリ(フレームワーク)の中に、この形式のままActionScript3.0で使えるデータに変換してくれる「JSON」クラスというものがあるので、これを使うとまさに、「データ[0].id」を参照すると「0004」が取りだせる、というようなことができるのです。

というわけで、まずはそのas3corelibをこちらから入手してください。
そしてその中のsrcフォルダ内、comフォルダにクラスパスを通します。(またはlibフォルダ内の.swcファイル)

で、以下がActionScriptのサンプル。

import com.adobe.serialization.json.JSON;
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(new URLRequest("news.json"));
function completeHandler(e:Event):void
{
	var json:String = URLLoader(e.currentTarget).data;
	
	//デコード!!
	var news:Array = JSON.decode(json);
	
	//中身拝見
	for(var i:int=0;i<news.length;i++)
	{
		trace(news[i].id, news[i].date, news[i].title, news[i].description);
	}
}

XMLがいいか、JSONがいいかは好みによると思いますが、ドキュメントに適しているとされるXMLと、データ構造体に適しているとされるJSONとのことですので、場合によって使い分けてみるのもいいかもしれません。

ちなみにas3corelibのJSONクラスは、jsonファイルの改行コードがLF(UNIX形式)でないと、問題になるようです。
僕は基本テキストファイルはすべて文字コードUTF-8、改行コードLFにしているので気づきませんでしたが、その辺を気にせずにテキストファイルを書いている方は要注意です。
(参考:外付Web海馬 - as3corelibのJSONと改行コード

リンク
as3corelib JSONクラス
JSON公式
JSONLint - The JSON Validator
檜山正幸のキマイラ飼育記 - もう一度、ちゃんとJSON入門 JSONを書くときの注意点がわかりやすくまとめられています。
外付Web海馬 - as3corelibのJSONと改行コード

Tweet Share Bookmark

Navigation

prev: Flash CS4 Professionalからはメタデータが使えるらしい
next: トップページリニューアル

Recently Entries