用于php的Javascript数组序列化函数

时间:2012-01-28 16:02:41

标签: javascript arrays serialization

我有这个javascript函数,它将javascript数组转换为序列化字符串,以便在php中用作数组。

function js_array_serialize(a) {
  var a_php = "";
  var total = 0;
  for (var key in a) {
    ++ total;
    a_php = a_php + "s:" + 
      String(key).length + ":\"" + String(key) + "\";s:" + 
      String(a[key]).length + ":\"" + String(a[key]) + "\";";
  }
  a_php = "a:" + total + ":{" + a_php + "}";
  return a_php;
}

上面的函数用于关联数组。但我有一个多维数组,必须在for循环中完成一些事情,我可以想到另一个嵌套循环。

我的javascript数组具有以下结构:

var a = {
   'index': {
     'subindex1': 'default',
     'subindex2': 'default'
   },
   'index2': {
     'subindex1': 'default',
     'subindex2': 'default'
   }
};

感谢任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎正在重塑JSON轮。怎么样:

function js_array_serialize(a) {
    return JSON.stringify(a);
}

JSON.stringify功能是本机内置的现代浏览器。如果您想支持旧版浏览器,只需在页面中加入json2.js脚本即可。

永远不要使用字符串连接来构建JSON。您需要处理更多的案例:正确转义值。例如,如果值包含引号?它会破坏你的序列化算法。