source

JS 오브젝트에 대한 JSON 문자열

ittop 2023. 3. 18. 09:24
반응형

JS 오브젝트에 대한 JSON 문자열

구글 시각화로 그래프를 만들기 위해 JS 객체를 사용하고 있습니다.데이터 소스를 설계하려고 합니다.처음에 JS 오브젝트 클라이언트 측을 만들었습니다.

var JSONObject = {
  cols: [{
      id: 'date',
      label: 'Date',
      type: 'date'
    },
    {
      id: 'soldpencils',
      label: 'Sold Pencils',
      type: 'number'
    },
    {
      id: 'soldpens',
      label: 'Sold Pens',
      type: 'number'
    }
  ],
  rows: [{
      c: [{
        v: new Date(2008, 1, 1),
        f: '2/1/2008'
      }, {
        v: 30000
      }, {
        v: 40645
      }]
    },
    {
      c: [{
        v: new Date(2008, 1, 2),
        f: '2/2/2008'
      }, {
        v: 14045
      }, {
        v: 20374
      }]
    },
    {
      c: [{
        v: new Date(2008, 1, 3),
        f: '2/3/2008'
      }, {
        v: 55022
      }, {
        v: 50766
      }]
    }
  ]
};

var data = new google.visualization.DataTable(JSONObject, 0.5);

이제 데이터를 동적으로 가져와야 합니다.따라서 JSON 문자열을 반환하는 페이지에 AJAX 요청을 보냅니다.

 "cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
  rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
      {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"

이것은 변수에 저장합니다.

var var1 = "cols: [{i ....... 66}]}"

로서 나타나다

alert(var1);

이제 이 문자열에서 JS 개체를 만드는 작업을 수행합니다.이거 안 되네.JS 오브젝트를 사용하면 모든 것이 정상적으로 동작하여 필요한 그래프를 얻을 수 있습니다.Alert 메시지에서 확인한AJAX 요청과 동일한 값의 문자열을 n개의 객체에 넣으려고 하면 객체가 올바르게 생성되지 않습니다.당신의 의견과 수정사항이나 조언을 알려주세요.

일부 최신 브라우저에서는 JSON을 네이티브오브젝트로 해석할 수 있습니다.

var var1 = '{"cols": [{"i" ....... 66}]}';
var result = JSON.parse(var1);

이 기능을 지원하지 않는 브라우저의 경우 JSON 개체를 안전하게 해석하기 위해 json.org에서 json2.dload를 다운로드할 수 있습니다.스크립트는 네이티브 JSON 지원을 확인하고 네이티브 JSON이 없는 경우 대신 JSON 글로벌 개체를 제공합니다.더 빠른 네이티브 개체를 사용할 수 있는 경우 스크립트는 그대로 종료됩니다.단, 유효한 JSON을 입력해야 합니다.그렇지 않으면 오류가 발생합니다.JSON의 유효성은 http://jslint.com 또는 http://jsonlint.com에서 확인할 수 있습니다.

문자열의 데이터를 신뢰하는 경우 eval(jsonString)을 사용할 수 있습니다.그렇지 않은 경우 데이터를 올바르게 해석해야 합니다.일부 코드 샘플은 json.org에서 확인하십시오.

질문의 문자열이 유효한 json 문자열이 아닙니다.json.org 웹사이트:

JSON은 다음 두 가지 구조를 기반으로 구축됩니다.

* A collection of name/value pairs. In various languages, this is 
  realized as an object, record, struct, dictionary, hash table, keyed list, or
  associative array.
* An ordered list of values. In most languages, this is realized as an
  array, vector, list, or sequence.

기본적으로 json 문자열은 항상 { 또는 [로 시작합니다.

그리고 @Andy E와 @Cryo가 말한 것처럼 json2.js 또는 기타 라이브러리를 사용하여 문자열을 해석할 수 있습니다.

IMHO 어떤 Javascript 프로그램이든 보안 문제가 발생할 수 있으므로 eval은 피해야 합니다.

JSON.org 에서 이 라이브러리를 사용하여 문자열을 JSON 개체로 변환할 수 있습니다.

var var1_obj = JSON.parse(var1);

또는 jquery-json 라이브러리를 사용할 수도 있습니다.

var var1_obj = $.toJSON(var1);

반환하는 문자열은 유효한 JSON이 아닙니다.개체의 이름을 따옴표로 묶고 문자열 전체를 입력해야 합니다.{ … } 또한 JSON을 포함할 수 .new Date() 어레이, JSON의 작은 서브셋에 , JSON은 문자열, 숫자, 오브젝트, 어레이, JSON, JavaScript, JavaScript만을 합니다.true,false ★★★★★★★★★★★★★★★★★」null.

상세한 것에 대하여는, JSON 의 문법을 참조해 주세요.

언급URL : https://stackoverflow.com/questions/2257117/json-string-to-js-object

반응형