Programing

JS 객체에 대한 JSON 문자열

crosscheck 2020. 11. 1. 17:22
반응형

JS 객체에 대한 JSON 문자열


Google 시각화로 그래프를 만들기 위해 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 객체를 사용하면 모든 것이 잘 작동하며 필요한 그래프를 얻을 수 있습니다. 이제 경고 메시지에서 확인한 AJAX 요청의 동일한 문자열 값을 개체에 넣으려고하면 개체가 올바르게 생성되지 않습니다. 귀하의 의견과 수정 또는 조언을 알려주십시오.


일부 최신 브라우저는 JSON을 네이티브 개체로 구문 분석하는 기능을 지원합니다.

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

이를 지원하지 않는 브라우저 의 경우 JSON 객체의 안전한 구문 분석을 위해 json.org 에서 json2.js를 다운로드 할 수 있습니다 . 스크립트는 네이티브 JSON 지원을 확인하고 존재하지 않는 경우 대신 JSON 전역 개체를 제공합니다. 더 빠른 네이티브 개체를 사용할 수있는 경우 스크립트를 그대로두고 종료합니다. 그러나 유효한 JSON을 제공해야합니다. 그렇지 않으면 오류가 발생합니다 . http://jslint.com 또는 http://jsonlint.com에서 JSON의 유효성을 확인할 수 있습니다 .


문자열의 데이터를 신뢰하는 경우 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는 모든 자바 스크립트 프로그램이므로 eval을 피해야하므로 보안 문제가 발생할 수 있습니다.


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

var var1_obj = JSON.parse(var1);

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

var var1_obj = $.toJSON(var1);

반환하는 문자열이 유효한 JSON이 아닙니다. 객체의 이름은 따옴표로 묶어야하고 { … }객체를 형성 하려면 전체 문자열을 넣어야 합니다. JSON은 또한 new Date(). JSON은 문자열, 숫자, 객체, 배열 true, falsenull.

자세한 내용은 JSON 문법 을 참조하세요.

참고 URL : https://stackoverflow.com/questions/2257117/json-string-to-js-object

반응형