JSON Flash Player 11 和 AIR 3.0 编码

JSON encoding for Flash Player 11 and AIR 3.0

我有以下代码:

thinkGearSocket = new Socket();

      var configuration : Object = new Object();
      configuration["enableRawOutput"] = true;
      configuration["format"] = "Json";
      thinkGearSocket.connect("127.0.0.1", 13854);
      thinkGearSocket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler);
      thinkGearSocket.writeUTFBytes(JSON.encode(configuration));

它适用于 Flash Player 10 但对于 Flash Player 11 我收到一条错误消息:

1061: Call to a possibly undefined method encode though a reference with static type flash.net:socket

我在解码时遇到了同样的错误:

private function dataHandler(e : ProgressEvent){
      //read data from the socket
      var packetString : String = thinkGearSocket.readUTFBytes(thinkGearSocket.bytesAvailable);
      thinkGearSocket.flush();

      //split the data into an array
      var packets : Array = packetString.split(/\r/);
      var data:Object;
      //iterate through array elements
      for each (var packet:String in packets){
        //sometimes the packet is empty
        if(packet != "") {
          try {
            data = JSON.decode(packet);
            //trace(packet);
          } catch ( jError: JSONParseError) {
              // do exception handling here
              label1.text = jError.text;

          }

但我改变了:

data = JSON.decode(packet);

至:

data = JSON.parse(packet);

现在我没有收到该部分的错误。如何修复 Flash Player 11 和 AIR 3.0 的编码部分?

对于 Flash 11 或更高版本,您需要使用 stringify 方法而不是编码。

stringify(value:Object, replacer:* = null, space:* = null):String

您可以在 AS3 livedocs 中查看有关 stringify 的更多信息。