有没有办法将字符串反序列化为actionscript中的对象:
即
var str:String = "{ id: 1, value: ['a', 500] }";
应该成为一个合适的actionscript对象。
这不是json,因为密钥没有用引号括起来。
答案 0 :(得分:2)
好的,对于那种类型的数据模式,我不知道这样做的好方法。假设您不能影响数据,使其更像JSON ...这是我的概念性尝试:
var str:String = "{ id:1, value:['a', 500] }";
// strip off the { and } characters since we've nothing nice to do that for us...
var mynewString:String = str.slice(1, str.length - 1);
var stringItems:Array = mynewString.split(",");
var obj:Object = new Object();
for (var i in stringItems)
{
var objProps:Array = stringItems[i].split(":");
// kill off the quotes here
obj[props[0]] = objProps[1].slice(1, objProps[1].length - 1);
if ( obj[props[0]].indexOf('[') == 0 ) {
// remove [ and ] if there
var maybeStrArray:String = obj[props[0]].slice(1, str.length - 1);
// right now assume we're an array based on our inbound data
var strArr:Array = maybeStrArray.split(",");
obj[props[0]] = strArr;
}
}
无论如何都有类似的东西。是的,它很粗糙,绝对可以以更灵活的方式制作(例如将字符串移动到数组转换为自己的函数,以便我可以在其他地方使用它)。这只是概念上作为答案首先想到的第一件事。
尝试一下,调整它,看它是否有帮助。
答案 1 :(得分:1)
您可以使用as3corelib library进行JSON反序列化。真的不值得花时间编写自己的实现(除非你愿意)。