flex json
8679 ワード
XMLは強力だが、xmlが簡潔ではなく、符号化と復号化にも一定の難易度があると考える人もいる.そこで21世紀初頭にJSON符号化が発明され、xmlよりコンテンツが少なく読みやすく、符号化復号化の難易度もxmlより簡単であるため、急速にxmlよりも人気のある符号化フォーマットに普及した.JSON符号化はデータ構造の分析に由来し、すべてのデータ構造は3種類の基本データ構成単位に分けることができる.
1つ目のタイプは、スカラー、すなわち個別の文字列または数値です.
2つ目のタイプはシーケンスです.つまり、いくつかの関連データが一定の順序で並べられ、配列やリストとも呼ばれます.
3つ目のタイプは、マッピング、すなわち名前/値ペアであり、関連配列(Objectまたはディクショナリ)とも呼ばれる.
ほとんどの言語にはこの3つのタイプがあり、as 3も例外ではありません.これはJSONが共通の符号化フォーマットの基礎となっています.JSONは以下の規範を提出しています.
1.並列データ間をカンマ(",")で区切ります.
2.マッピングはコロン(":")で表されます.
3.並列データの集合(配列)をかっこ("[])で表す.
4.マッピングされた集合(オブジェクト)は、括弧("{}")で表されます.
これはc++,java,c#,javascriptなどの一般的な言語の作成習慣に合致し、as 3も例外ではありません.例えば:
[
{「名前」:「張三」,「性別」:「男」,「年」:28},
{「名前」:「四鳳」、「性別」:女、「年齢」:24}
]
{"backgroundPic":"aaaa","mapBounds":{"x":10,"y":20},"hero":{ここに英雄データを書く},"secnceVec":[{シーン1データ},{シーン2データ}...]「モンスターVec」:[{モンスター1データ},{モンスター2データ}...]「coinVec」:[{金貨1データ},{金貨2データ}...]「whoYourDadVec」:[{無敵薬水1データ},{無敵薬水2データ}...]「bouncyPointVec」:[{スプリングポイント1データ},{スプリングポイント2データ}...]}
この構造はas 3の字面値と非常に似ているため、as 3を用いてJSONを記述することは非常に大きな利点があり、現在as 3にはJSON符号化が内蔵されていないため、AdobeのJSONツールパッケージをダウンロードする必要があり、ダウンロード後にJSONクラスの符号化と復号を使用することができ、JSONの使用も非常に簡単で、2つの静的方法:JSONのみを含む.Encode(o:Object):StringとJSON.decode(s:String,strict:Boolean=true):*,endode()は関連配列,Arrayを文字列に変換でき,decode()はjson形式の文字列をObjectに変換でき,strictは厳密な検査に用いられ,フォーマットが標準でない場合JSOnParseErrorのエラーが報告されるが,以下はJSON符号化と復号化を用いる例である.
ssss.php
[SWF] test_json.swf - 2,137,848 bytes after decompressionzhanzhihu340,1,2,3zhanzhihu{"lastName":"Gate","firstName":"bill","com":"Microsoft"}[object Object],[object Object],[object Object]IsaacTadFrank[Unload SWF] test_json.swf
flex 4.6デフォルトではjsonが追加されています.
parse(text:String,reviver:Function=null):Object[静的]JSON形式の文字列を受け入れ、その値を表すActionScriptオブジェクトを返します.
JSON
stringify(value:Object,replacer:*=null,space:*=null):String[静的]ActionScript値を表すJSON形式の文字列を返します.
1つ目のタイプは、スカラー、すなわち個別の文字列または数値です.
2つ目のタイプはシーケンスです.つまり、いくつかの関連データが一定の順序で並べられ、配列やリストとも呼ばれます.
3つ目のタイプは、マッピング、すなわち名前/値ペアであり、関連配列(Objectまたはディクショナリ)とも呼ばれる.
ほとんどの言語にはこの3つのタイプがあり、as 3も例外ではありません.これはJSONが共通の符号化フォーマットの基礎となっています.JSONは以下の規範を提出しています.
1.並列データ間をカンマ(",")で区切ります.
2.マッピングはコロン(":")で表されます.
3.並列データの集合(配列)をかっこ("[])で表す.
4.マッピングされた集合(オブジェクト)は、括弧("{}")で表されます.
これはc++,java,c#,javascriptなどの一般的な言語の作成習慣に合致し、as 3も例外ではありません.例えば:
[
{「名前」:「張三」,「性別」:「男」,「年」:28},
{「名前」:「四鳳」、「性別」:女、「年齢」:24}
]
{"backgroundPic":"aaaa","mapBounds":{"x":10,"y":20},"hero":{ここに英雄データを書く},"secnceVec":[{シーン1データ},{シーン2データ}...]「モンスターVec」:[{モンスター1データ},{モンスター2データ}...]「coinVec」:[{金貨1データ},{金貨2データ}...]「whoYourDadVec」:[{無敵薬水1データ},{無敵薬水2データ}...]「bouncyPointVec」:[{スプリングポイント1データ},{スプリングポイント2データ}...]}
package gameElements.data
{
import flash.geom.Point;
/**
*
* */
public class Ele_MissionData
{
/**
*
* */
public var backgroundPic:String;
/**
*
* */
public var mapBounds:Point;
/**
*
* */
public var hero:Ele_Hero_Data;
/**
*
* */
public var secnceVec:Vector.<Ele_Secnce_Data>;
/**
*
* */
public var monsterVec:Vector.<Ele_Monster_Data>;
/**
*
* */
public var coinVec:Vector.<Ele_Coin_Data>;
/**
*
* */
public var whoYourDadVec:Vector.<Ele_WhosYourDad_Data>;
/**
*
* */
public var bouncyPointVec:Vector.<Ele_BouncyPoint_Data>;
}
}
この構造はas 3の字面値と非常に似ているため、as 3を用いてJSONを記述することは非常に大きな利点があり、現在as 3にはJSON符号化が内蔵されていないため、AdobeのJSONツールパッケージをダウンロードする必要があり、ダウンロード後にJSONクラスの符号化と復号を使用することができ、JSONの使用も非常に簡単で、2つの静的方法:JSONのみを含む.Encode(o:Object):StringとJSON.decode(s:String,strict:Boolean=true):*,endode()は関連配列,Arrayを文字列に変換でき,decode()はjson形式の文字列をObjectに変換でき,strictは厳密な検査に用いられ,フォーマットが標準でない場合JSOnParseErrorのエラーが報告されるが,以下はJSON符号化と復号化を用いる例である.
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Script>
<![CDATA[
import com.adobe.serialization.json.*;
private var jsonStr:String;
private var jsonObj:Object;
private var jsonObj2:Object;
private var jsonStr2:String;
private var jsonObj3:Object;
internal function init():void{
jsonStr = '{"name":"zhanzhihu","age":22,"gender":"male","arr":[0,1,2,3]}';
jsonObj = new Object();
jsonObj = com.adobe.serialization.json.JSON.decode(jsonStr);
trace(jsonObj.name);
trace(jsonObj.age + 12);
trace(jsonObj.arr);
trace(jsonObj["name"]);
jsonObj2 = new Object();
jsonObj2.firstName = "bill";
jsonObj2.lastName = "Gate";
jsonObj2.com = "Microsoft";
jsonStr2 = com.adobe.serialization.json.JSON.encode( jsonObj2 );
trace( jsonStr2 );
getJSON();
}
public function getJSON():void{
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(new URLRequest( "model/ssss.php"));
urlLoader.addEventListener(Event.COMPLETE, decodeJSONHandler);
}
private var sss:Object=new Object();
private function decodeJSONHandler(event:Event):void{
var jsonArray:Array = com.adobe.serialization.json.JSON.decode( URLLoader( event.target ).data );
trace(jsonArray);
for (var i:int=0; i<jsonArray.length; i++) {
trace( jsonArray[i] .firstName);
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:WindowedApplication>
ssss.php
[{"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},
{"firstName":"Tad","lastName":"Williams","genre":"fantasy"},
{"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}]
[SWF] test_json.swf - 2,137,848 bytes after decompressionzhanzhihu340,1,2,3zhanzhihu{"lastName":"Gate","firstName":"bill","com":"Microsoft"}[object Object],[object Object],[object Object]IsaacTadFrank[Unload SWF] test_json.swf
flex 4.6デフォルトではjsonが追加されています.
parse(text:String,reviver:Function=null):Object[静的]JSON形式の文字列を受け入れ、その値を表すActionScriptオブジェクトを返します.
JSON
stringify(value:Object,replacer:*=null,space:*=null):String[静的]ActionScript値を表すJSON形式の文字列を返します.
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Script>
<![CDATA[
//import com.adobe.serialization.json.*;
private var jsonStr:String;
private var jsonObj:Object;
private var jsonObj2:Object;
private var jsonStr2:String;
private var jsonObj3:Object;
internal function init():void{
jsonStr = '{"name":"zhanzhihu","age":22,"gender":"male","arr":[0,1,2,3]}';
jsonObj = new Object();
//jsonObj = com.adobe.serialization.json.JSON.decode(jsonStr);
jsonObj = JSON.parse(jsonStr);
trace(jsonObj.name);
trace(jsonObj.age + 12);
trace(jsonObj.arr);
trace(jsonObj["name"]);
jsonObj2 = new Object();
jsonObj2.firstName = "bill";
jsonObj2.lastName = "Gate";
jsonObj2.com = "Microsoft";
//jsonStr2 = com.adobe.serialization.json.JSON.encode( jsonObj2 );
jsonStr2 = JSON.stringify(jsonObj2);
trace( jsonStr2 );
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:WindowedApplication>