将类转换为对象动作脚本 3

Posted

技术标签:

【中文标题】将类转换为对象动作脚本 3【英文标题】:convert class to object actionscript 3 【发布时间】:2014-09-02 11:07:58 【问题描述】:

我正在尝试将类转换为 json。

班级是:

package com.globalData

    public class userSite 
        private var uID:int,uName:String,uSocket:int,uZone:int,uRoom:int;
        public function user(ID:int,Name:String,ZoneID:int,RoomID:int,socketID:int)
            uID = ID;
            uName = Name;
            uSocket = socketID;
            uZone = ZoneID;
            uRoom = RoomID;
        

        public function getName():String
            return uName;
        
        public function getID():int
            return uID;
        
        public function getZoneID():int
            return uZone;
        
        public function getRoomID():int
            return uRoom;
        
        public function getSocket():int
            return uSocket;
        
    

我试图这样做:

json(Object(roomVar));

但它不起作用(JSOn 是主类上的函数)

我需要将类转换为 json 并发送 json -> Socket 我该怎么做?

【问题讨论】:

你应该发布json函数的代码。 public function json(obj) return com.adobe.serialization.json.JSON.decode(obj); 您说“将类转换为 JSON”,但我怀疑您的意思是真的将内容数据类转换并发送?既然您已经在检索 NamesocketID 之类的东西,就不能将它们放入字符串甚至数组/对象中并将其作为 JSON 数据发送吗? This link 可能会有所帮助(请参阅 Adam Harte 的回答) 【参考方案1】:

上面的代码存在一些问题:

    您的userSite 类似乎没有构造函数。相反,您选择了一个 user 函数来接收所有初始化参数

    您正在使用可能应该使用访问器方法的函数,有时称为getter

    public function getName():String return uName; 将变为 public function get name():String return uName; 而不是调用getName(),您可以访问name 作为属性:instance.name

    您正在尝试将Object 传递给JSON.decode 方法,此方法需要String" 'a':1, 'b':[1,2,3] " 之类的参数是可接受的参数。这将返回一个具有两个属性ab 的对象,a 将包含值1b 将包含一个包含元素123 的数组.您正在寻找的实际上是JSON.encode 方法,它接受Object 并将其转换为String(可以解析为JSON)。

我建议您将所有getXYZ() 函数转换为访问器,这将允许将该类的实例作为属性集合读取,这反过来又允许JSON.encode 函数创建JSON来自它的字符串对象:

package com.globalData


        public class UserSite 
            private var uID:int,uName:String,uSocket:int,uZone:int,uRoom:int;
            public function UserSite(ID:int,Name:String,ZoneID:int,RoomID:int,socketID:int):void
                uID = ID;
                uName = Name;
                uSocket = socketID;
                uZone = ZoneID;
                uRoom = RoomID;
            

            public function get name():String
                return uName;
            
            public function get ID():int
                return uID;
            
            public function get zoneID():int
                return uZone;
            
            public function get roomID():int
                return uRoom;
            
            public function get socket():int
                return uSocket;
            
        
    

用法:

var roomVar:UserSite = new UserSite(1, 'Name', 2, 3, 4);
trace(JSON.encode(roomVar as Object));

输出:

"ID":1,"name":"Name","socket":4,"roomID":3,"zoneID":2

【讨论】:

以上是关于将类转换为对象动作脚本 3的主要内容,如果未能解决你的问题,请参考以下文章

Array.from将类对象转换为真正数组

将类对象转换为字符串

javascript 将类数组对象转换为数组

python 将类对象转换成json

Srmklive\PayPal 错误“无法将类 Illuminate\Routing\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐

将类从asType转换为类 :无法施放