2013-04-17 69 views
1

我想使用AJAX加载数据而不将其格式化为JSON,所以我自己编码。在JavaScript中有效地将数组映射到字符串

的数据是客户记录:英镑符号(#)分隔客户记录,管号(|)分隔客户数据的领域,并在克拉符号(^)分隔该字段的值的字段名。

所以,我有这样的事情(简体):

name^James|email^[email protected]#name^Bary|email^[email protected]#... 

当加载这些数据转换为JavaScript,我希望把它变成一个二维数组,像这样:

clients = [ 
['name'=>'James','email'=>'[email protected]'], 
['name'=>'Bary','email'=>[email protected]] 
] 

...或者是对象格式的东西。如何最好地做到这一点?

+2

为什么你不能使用JSON? – Blender

+0

,因为它不适合我的语言 – Yaakov

+0

您使用的是哪种语言? – plalx

回答

0

请注意,您无法在键或值中使用特殊字符(|,^,#)。如果您决定对它们进行编码,那么您可能会使用JSON。所以我真的推荐JSON,所以你不必自己做任何事情。

如果您决定不支持包含(|,^,#)的键和值,那么您可以使用JavaScript拆分功能。像这样的东西(我没有运行它):

var output=[]; 
var clients = input.split("#"); 

for (var client in clients) 
{ 
    var outputClient={} 
    var clientProps = client.split('|'); 
    for (var propPair in clientProps) 
    { 
    var propPairVal = propPair.split('^'); 
    outputClient[propPairVal[0]] = propPairVal[1]; 
    } 
    output.push(outputClient); 
} 

但是,我真的推荐JSON。它将会更加灵活和更少的bug。

+0

谢谢。不幸的是我不能使用Json。我可以使用其他什么标志? – Yaakov

+1

@Yaakov:因此,你不应该搞清楚如何正确使用JSON,而是通过编写自己的格式来让自己回到一个角落? – Blender