programing

다차원 Javascript 배열을 JSON으로 변환하시겠습니까?

madecode 2023. 3. 4. 15:21
반응형

다차원 Javascript 배열을 JSON으로 변환하시겠습니까?

다차원 javascript 배열을 JSON으로 변환하는 가장 좋은 방법은 무엇입니까?

인기 있는 JavaScript 프레임워크의 대부분은 JSON 유틸리티 기능을 포함하고 있습니다.예를 들어 jQuery에는 url을 직접 호출하여 JSON 결과를 개체로 로드하는 함수가 있습니다.http://docs.jquery.com/Getjson

단, 오픈소스 JSON 파서와 스트링ifier는 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 지원을 확인해야 합니다.여기 레식 게시물이 있습니다.아직 지원하지 않는 브라우저의 경우 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;
}

라이브러리의 인코딩 기능을 사용할 수 있습니다.

이전에 제공한 코드를 조금 수정했습니다.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));

이거 드셔보세요

이 코드를 사용하여 2개 이상의 어레이에 대해 매우 간단한 개발을 수행합니다.

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

JavaScript는 개체를 올바르게 인코딩합니다.

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

JavaScript는 배열을 인코딩하지 않습니다.

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

언급URL : https://stackoverflow.com/questions/459105/convert-a-multidimensional-javascript-array-to-json

반응형