1

HTTPリクエストの結果、URLLoaderオブジェクトにJSONデータがあります。JSONをTextField内にフォーマットされた方法で配置する必要があります。

どうすればこれを達成できますか?

[{"id":"barrrrrr","client":"foo"}]

このように見えます:

[
   {
      "id":"barrrrrr",
      "client":"foo"
   }
]

テキストフィールド内?

乾杯。

4

2 に答える 2

3

Flash Player 11+ でネイティブ JSON オブジェクトを使用する

var stringJSON:String = loader.data as String;
var jsonData:Object = JSON.parse(stringJSON);
textField.text = JSON.stringify(jsonData,null,4);
于 2012-11-02T17:42:48.070 に答える
0

あなたが尋ねたものとまったく同じではありませんが、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メソッドを変更して (非常に単純です)、出力を自分のものに近づけることができます。

于 2012-11-02T14:36:43.267 に答える