将类转换为对象动作脚本 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”,但我怀疑您的意思是真的将内容数据从类转换并发送?既然您已经在检索 Name
和 socketID
之类的东西,就不能将它们放入字符串甚至数组/对象中并将其作为 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] "
之类的参数是可接受的参数。这将返回一个具有两个属性a
和b
的对象,a
将包含值1
,b
将包含一个包含元素1
、2
和3
的数组.您正在寻找的实际上是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的主要内容,如果未能解决你的问题,请参考以下文章
Srmklive\PayPal 错误“无法将类 Illuminate\Routing\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐