HTTPリクエストの結果、URLLoaderオブジェクトにJSONデータがあります。JSONをTextField内にフォーマットされた方法で配置する必要があります。
どうすればこれを達成できますか?
[{"id":"barrrrrr","client":"foo"}]
このように見えます:
[
{
"id":"barrrrrr",
"client":"foo"
}
]
テキストフィールド内?
乾杯。
HTTPリクエストの結果、URLLoaderオブジェクトにJSONデータがあります。JSONをTextField内にフォーマットされた方法で配置する必要があります。
どうすればこれを達成できますか?
[{"id":"barrrrrr","client":"foo"}]
このように見えます:
[
{
"id":"barrrrrr",
"client":"foo"
}
]
テキストフィールド内?
乾杯。
Flash Player 11+ でネイティブ JSON オブジェクトを使用する
var stringJSON:String = loader.data as String;
var jsonData:Object = JSON.parse(stringJSON);
textField.text = JSON.stringify(jsonData,null,4);
あなたが尋ねたものとまったく同じではありませんが、as3 オブジェクト (json も同様) をログに記録するためにこのメソッドを使用します。
package
{
import flash.display.Sprite;
import flash.utils.getQualifiedClassName;
public class astest extends Sprite
{
public function astest()
{
var jsonStr:String = '[{"id":"barrrrrr","client":{"id":"barrrrrr","client":"foo"}},{"id":"barrrrrr","client":"foo"}]';
var jsonObj:Object = JSON.parse(jsonStr);
trace(parse(jsonObj));
}
private static const simpleTypes:Array = ["int", "uint", "String", "Number", "Boolean", "null", "XML", "void"];
private static function parse(o:Object, tabs:String = ""):String
{
var out:String = "";
var tabStr:String = " ";
var cnt:int = 40; //number of properties on the same object to log out
var type:String;
for(var prop:* in o)
{
type = "null";
try{
type = getQualifiedClassName(o[prop]);
}catch(error:Error){};
out+= tabs + String(prop) + ":" + type + " = ";
if(simpleTypes.indexOf(type) >=0)
out+=o[prop]+"\r";
else
out+=type+"\r"+parse(o[prop], tabs+tabStr);
if(--cnt<=0)
{
out+=tabs+"...\r";
break;
}
}
return out;
}
}
}
この例の出力は次のようになります。
0:Object = Object
client:Object = Object
client:String = foo
id:String = barrrrrr
id:String = barrrrrr
1:Object = Object
client:String = foo
id:String = barrrrrr
parseメソッドを変更して (非常に単純です)、出力を自分のものに近づけることができます。