2012-02-08 68 views
0

是有办法反序列化字符串对象中的ActionScript:的Actionscript反序列化字符串为对象

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

应被制成适当的ActionScript对象。

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

+0

有没有一个rason的字符串不能先转换成json?这似乎是一个好主意。 – 2012-02-08 23:22:49

+0

以及实际上转换应该是可能的。对不起,我没有考虑过这个 – clamp 2012-02-09 09:19:25

回答

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; 
    } 
} 

类似的东西或类似的也无妨。是的,这很粗糙,并且绝对可以用更灵活的方式进行设计(比如将字符串移动到数组转换为其自己的函数,以便我可以在其他地方使用它)。这只是概念上首先想到的答案。

尝试一下,调整它,看看它是否有帮助。

+0

虐待接受这个答案为你所做的努力。然而,我与解决方案正确格式化为json然后使用as3corelib。 – clamp 2012-02-10 08:55:48

1

您可以使用as3corelib library进行JSON反序列化。花时间写自己的实现是不值得的(除非你希望如此)。

相关问题