将多维javascript数组转换为JSON?

Kri*_*dan 39 javascript arrays json

将多维javascript数组转换为JSON的最佳方法是什么?

Woo*_*kai 27

大多数流行的JavaScript框架都包含JSON实用程序功能.例如,jQuery有一个直接调用url并将JSON结果作为对象加载的函数:http://docs.jquery.com/Getjson

但是,您可以从json网站获取开源JSON解析器和字符串:

https://github.com/douglascrockford/JSON-js

然后,只需包含代码并在数组上使用JSON.stringify()方法.


小智 14

其他海报提供了"最佳"方式.如果您不需要引用库的完整编码功能,并且只需要编码简单数组,那么试试这个:

<!DOCTYPE html>
<html>
<head>
<title>Simple functions for encoding Javascript arrays into JSON</title>
<script type="text/javascript">

window.onload = function() {
  var a = [
    [0, 1, '2', 3],
    ['0', '1', 2],
    [],
    ['mf', 'cb']
  ],
  b = [
    0, '1', '2', 3, 'woohoo!'
  ];
  alert(array2dToJson(a, 'a', '\n'));
  alert(array1dToJson(b, 'b'));
};

function array2dToJson(a, p, nl) {
  var i, j, s = '{"' + p + '":[';
  nl = nl || '';
  for (i = 0; i < a.length; ++i) {
    s += nl + array1dToJson(a[i]);
    if (i < a.length - 1) {
      s += ',';
    }
  }
  s += nl + ']}';
  return s;
}

function array1dToJson(a, p) {
  var i, s = '[';
  for (i = 0; i < a.length; ++i) {
    if (typeof a[i] == 'string') {
      s += '"' + a[i] + '"';
    }
    else { // assume number type
      s += a[i];
    }
    if (i < a.length - 1) {
      s += ',';
    }
  }
  s += ']';
  if (p) {
    return '{"' + p + '":' + s + '}';
  }
  return s;
}

</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 也许是一个老问题,但仍然是一个很好的答案! (4认同)

Jer*_*rry 5

不确定我是否完全理解您的问题,但如果您尝试将对象转换为JSON字符串,那么您可能希望查看所有新浏览器中的本机JSON支持.这是Resig的帖子.对于尚不支持它的浏览器,请尝试使用json2.js库.JSON.stringify(obj)会将您的对象转换为JSON字符串.