簡體   English   中英

將多維javascript數組轉換為JSON?

[英]Convert a multidimensional javascript array to JSON?

將多維javascript數組轉換為JSON的最佳方法是什么?

大多數流行的JavaScript框架都包含JSON實用程序功能。 例如,jQuery有一個直接調用url並將JSON結果作為對象加載的函數: http//docs.jquery.com/Getjson

但是,您可以從json網站獲取開源JSON解析器和字符串:

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

然后,只需包含代碼並在數組上使用JSON.stringify()方法。

其他海報提供了“最佳”方式。 如果您不需要引用庫的完整編碼功能,並且只需要編碼簡單數組,那么試試這個:

<!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>

不確定我是否完全理解您的問題,但如果您嘗試將對象轉換為JSON字符串,那么您可能希望查看所有新瀏覽器中的本機JSON支持。 這是Resig的帖子 對於尚不支持它的瀏覽器,請嘗試使用json2.js庫。 JSON.stringify(obj)會將您的對象轉換為JSON字符串。

這將轉換對象內的所有數組組合,反之亦然,包括函數名稱:

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;
}
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();
}

和3個數組

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();
}

我已修改了之前提供的代碼...因為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>

您可以使用此庫的編碼功能。

JavaScript將正確編碼對象:

var a = new Object;
var a = {};

JavaScript 不會數組進行編碼:

var a = new Array();
var a = [];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM