2012-02-08 25 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反序列化。花時間寫自己的實現是不值得的(除非你希望如此)。

相關問題