Actionscript将字符串反序列化为对象

时间:2012-02-08 14:14:04

标签: string actionscript deserialization

有没有办法将字符串反序列化为actionscript中的对象:

  var str:String = "{ id: 1, value: ['a', 500] }";

应该成为一个合适的actionscript对象。

这不是json,因为密钥没有用引号括起来。

2 个答案:

答案 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反序列化。真的不值得花时间编写自己的实现(除非你愿意)。