将多维JavaScript数组转换为JSON?
将多维JavaScript数组转换为JSON的最佳方法是什么?
大多数stream行的JavaScript框架都包含JSON实用function。 例如,jQuery有一个函数,可以直接调用url并将JSON结果作为对象加载: http : //docs.jquery.com/Getjson
但是,您可以从json网站获得开源的JSONparsing器和string器:
https://github.com/douglascrockford/JSON-js
然后,只需包含代码并在您的数组上使用JSON.stringify()方法。
其他海报提供了“最好”的方式。 如果您不需要引用库的完整编码function,只需要编码简单的数组,那么试试这个:
<!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>
不知道我完全理解你的问题,但是如果你想把对象转换成JSONstring,那么你可能想看看所有新浏览器中的本机JSON支持。 这里是Resig的post 。 对于尚不支持的浏览器,请尝试使用json2.js库。 JSON.stringify(obj)将把你的对象转换成JSONstring。
这将转换对象内数组的所有组合,反之亦然,包括函数名称:
function isArray(a){var g=a.constructor.toString(); if(g.match(/function Array()/)){return true;}else{return false;} } function objtostring(o){var a,k,f,freg=[],txt; if(typeof o!='object'){return false;} if(isArray(o)){a={'t1':'[','t2':']','isarray':true} }else {a={'t1':'{','t2':'}','isarray':false}}; txt=a.t1; for(k in o){ if(!a.isarray)txt+="'"+k+"':"; if(typeof o[k]=='string'){txt+="'"+o[k]+"',"; }else if(typeof o[k]=='number'||typeof o[k]=='boolean'){txt+=o[k]+","; }else if(typeof o[k]=='function'){f=o[k].toString();freg=f.match(/^function\s+(\w+)\s*\(/); if(freg){txt+=freg[1]+",";}else{txt+=f+",";}; }else if(typeof o[k]=='object'){txt+=objtostring(o[k])+","; } }return txt.substr(0,txt.length-1)+a.t2; }
你可以使用这个库的编码function。
我已经修改了以前提供的代码…因为JSON有这样的格式: [{"object":{"property_1":"value_1","property_2":"value_2"}}]
所以,代码将是…
<!DOCTYPE html> <html> <head> <title>Simple functions for encoding Javascript arrays into JSON</title> <script type="text/javascript"> window.onload = function(){ var a = [['property_1','value_1'],['property_2', 'value_2']]; alert("Comienzo..., paso ////"+a+"\\\\\\ a formato JSON"); var jsonSerialized = array2dToJson(a, 'object'); alert(jsonSerialized); }; // Estructura de JSON [{"object":{"property_1":"value_1","property_2":"value_2"}}] 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> <h1>Convertir un Array a JSON...</h1> </body> </html>
var t = {} for(var i=0;i<3;i++) { var _main = {}; var _dis = {} var _check = {}; _main["title"] = 'test'; _main["category"] = 'testing'; _dis[0] = ''; _dis[1] = ''; _dis[2] = ''; _dis[3] = ''; _check[0] = 'checked'; _check[1] = 'checked'; _check[2] = 'checked'; _check[3] = 'checked'; _main['values'] = _check; _main['disabled'] = _dis; t[i] = _main; } alert(JSON.stringify(t));
尝试这个
使用这个代码很简单,开发更多的两个数组
function getJSON(arrayID,arrayText) { var JSON = "["; //should arrayID length equal arrayText lenght and both against null if (arrayID != null && arrayText != null && arrayID.length == arrayText.length) { for (var i = 0; i < arrayID.length; i++) { JSON += "{"; JSON += "text:'" + arrayText[i] + "',"; JSON += "id:'" + arrayID[i] + "'"; JSON += "},"; } } JSON += "]" JSON = Function("return " + JSON + " ;"); return JSON(); }
和3arrays
function getJSON(arrayID, arrayText, arrayNumber) { var JSON = "["; if (arrayID != null && arrayText != null && arrayNumber!=null && Math.min(arrayNumber.length,arrayID.length)==arrayText.length) { for (var i = 0; i < arrayID.length; i++) { JSON += "{"; JSON += "text:'" + arrayText[i] + "',"; JSON += "id:'" + arrayID[i] + "',"; JSON += "number:'" + arrayNumber[i] + "'"; JSON += "},"; } } JSON += "]" JSON = Function("return " + JSON + " ;"); return JSON(); }