JSON 문자열을 객체로 안전하게 변환하기

JSON 데이터 문자열이 주어졌을 때, 어떻게 하면 해당 문자열을 JavaScript 객체로 안전하게 변환할 수 있을까요?

물론 다음과 같은 방법으로 안전하지 않게 변환할 수 있습니다.

var obj = eval("(" + json + ')');

...하지만 그렇게 하면 다른 코드가 포함된 json 문자열에 취약해지기 때문에 단순히 평가하는 것은 매우 위험해 보입니다.

질문에 대한 의견 (4)
해결책

'제슨스파스 (제슨슬링)' 은 순수 JavaScript 로 상당히 현대 있지만브라우저에 외곽진입 이렇게 오래 보장할 수 있습니다.

해설 (11)

지금은 쓰이지 않는 방법을 포함한다. 대신 이 방법을 사용합니다.

let jsonObject = JSON.parse(jsonString);
  • 기존 오토메이티드 사용되지 않는 jQuery 기능을 사용하여 *:

39 you& 사용하는 경우, re jQuery 됩니다.

jQuery.parseJSON( jsonString );

39 의 it& 정확히 어떤 you& # 39 찾고, re (자세한 내용은 jQuery [문서용으로] (http://api.jquery.com/jQuery.parseJSON/)).

해설 (3)

**편집: 이 답변은 IE 7에 대한 답변이며, 최신 브라우저는 위의 조나단 답변을 확인하세요.

편집: 이 답변은 구식이며 위의 조나단의 답변 (JSON.parse(jsonString))이 이제 최선의 답변입니다.

JSON.org에는 자바스크립트용 4가지 파서를 포함하여 여러 언어에 대한 JSON 파서가 있습니다. 대부분의 사람들이 json2.js를 고토 구현으로 간주할 것이라고 생각합니다.

해설 (3)

간단한 코드를 사용하여 표현할 다음 [https://partner. MSDN 에] [1].

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);

및 역동기화를

var str = JSON.stringify(arr);

[1]: 94%29.aspx http://msdn.microsoft.com/en-us/library/ie/cc836466%28v = vs.

해설 (0)

다른 방법은 잘 모르겠지만 프로토타입(JSON 튜토리얼)에서 그 방법을 확인할 수 있습니다.

new Ajax.Request('/some_url', {
  method:'get',
  requestHeaders: {Accept: 'application/json'},
  onSuccess: function(transport){
    var json = transport.responseText.evalJSON(true);
  }
});

인자로 참을 사용하여 evalJSON()을 호출하면 들어오는 문자열이 살균됩니다.

해설 (0)

이 문제가 될 것 같다.

Ajax 웹 소켓 등을 통해 입력 받으면 항상 알아야 할 경우 제슨스파르사블리 확장하지만 끈 형식 - 즉, 이 경우, 해당 프로그램을 통해 항상 토브레 실행하십시오 제슨스파스 & # 39, # 39 successfully& 계속할 수도 있다. 하지만 여전히 you& # 39, ll throw 콘솔에서 오류를 볼 수 있는 &quot 띄게, 오류: # 39, & # 39, 예상치 못한 토큰인지 x& ".

var data;

try {
  data = JSON.parse(jqxhr.responseText);
} catch (_error) {}

data || (data = {
  message: 'Server error, please retry'
});
해설 (2)

jQuery]1을 사용하는 경우 $.getJSON(url, function(data) { });을 수행할 수도 있습니다.

그런 다음 데이터.키1.무언가, 데이터.키1.무언가_다른 등과 같은 작업을 수행할 수 있습니다.

해설 (1)
$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

콜백 전달될 예정인 반환된 데이터를 JSON 사용하여 JavaScript 객체 또는 배열 () '에 정의된 구조와 구문 분석' $ 자파르세이슨 메서드입니다.

해설 (0)

그냥 재미로 슬라이드에서는 사용하여 운행에서어떠한 기능:

 jsonObject = (new Function('return ' + jsonFormatData))()
해설 (3)

이 방법을 이용하여 데이터 객체에는 사용해 봅니다. & # 39 ex 데이터 = {} ',' 진정한, & # 39, 카운트입니다 1 결과:.

try {
  eval('var obj=' + Data);
  console.log(obj.count);
}
catch(e) {
  console.log(e.message);
}

정말 이 방법을 사용하여 작업할 때 직렬 포트 프로그래밍 노데지스 데 도움이 됩니다

해설 (4)

가장 쉬운 방법은 ' ()' 를 사용하여 구문 분석 방법:

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

json 의 값을 얻을 수 있습니다 '다음' 요소, 예를 들면 다음과 같습니다.

var myResponseResult = JsonObject.result;
var myResponseCount = JsonObject.count;

JQuery 을 사용하여 설명된 문서용으로 :

JSON.parse(jsonString);
해설 (0)

제슨스파스 사용하여 요소라고 할 수 있는 좋은 방법입니다. 예를 들어 here& # 39 의 [라이브 데모를] (http://www.thedevelopertips.com/JavaScript/JS/Convert-JSON-to-JSObject.aspx? id = 7)

var jsonRes = '{ "students" : [' +
          '{ "firstName":"Michel" , "lastName":"John" ,"age":18},' +
          '{ "firstName":"Richard" , "lastName":"Joe","age":20 },' +
          '{ "firstName":"James" , "lastName":"Henry","age":15 } ]}';
var studentObject = JSON.parse(jsonRes);
해설 (0)

I found a &quot better"; 운행에서어떠한:

커피스크립트 에서:

try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }

Javascript:

var data;

try {
  data = JSON.parse(jqxhr.responseText);
} catch (_error) {}

data || (data = {
  message: 'Server error, please retry'
});
해설 (0)
JSON.parse(jsonString);

객체에는 제슨스파스 바뀝니다.

해설 (0)

JSON 구문 분석 항상 통증을 엉덩이. 만약 입력이 예상대로 던지는 것은 이 오류가 발생하여 충돌 너희는너희가 거지. 안전하게 구문 분석 기능을 사용할 수 있습니다 다음 작은 너회의 입력입니다. 항상 경우에도 회전 입력 객체에 대한 유효한 객체를 또는 이미 대부분의 경우 어떤 것이 더 아니다.

JSON.safeParse = function (input, def) {
  // Convert null to empty object
  if (!input) {
    return def || {};
  } else if (Object.prototype.toString.call(input) === '[object Object]') {
    return input;
  }
  try {
    return JSON.parse(input);
  } catch (e) {
    return def || {};
  }
};
해설 (7)

변환 객체를 JSON 은 다음과 같은 for me, it, 구문 분석 후

JSON.parse(JSON.stringify(object))
해설 (1)

만약 우리가 문자열으로 다음과 같습니다. ";;;;;}, {\&quot status\&quot 1 \&quot token\&quot :\&quot 65b4352b2dfc4957a09add0ce5714059\&quot "; 하나님은 이 문자열 객체를 JSON 을 사용하여 두 번 변환하십시오 제슨스파스 쉽게 할 수 있습니다.

var sampleString = "{\"status\":1,\"token\":\"65b4352b2dfc4957a09add0ce5714059\"}"
var jsonString= JSON.parse(sampleString)
var jsonObject= JSON.parse(jsonString)

단순히 사용하여 객체를 JSON 값을 추출하여 수 있습니다.

    // instead of last JSON.parse:
    var { status, token } = JSON.parse(jsonString);

그러면 다음과 같이 쓸 수 있다.

status = 1 and token = 65b4352b2dfc4957a09add0ce5714059
해설 (0)

Json () 로 전달된 기능, JSON 객체에는 문자열이어야 제슨스파스 변환합니다.

직접 가서 요소에 대한 전반적인 이해가 F12 키를 누릅니다 브라우저의 쓸 콘솔입니다 열려면 다음과 같은 명령: -

var response = '{"result":true,"count":1}'; //sample json object(string form)
JSON.parse(response); //converts passed string to JSON Object.

이제 명령을 실행합니다.

console.log(JSON.parse(response));

39, ll get 출력입니다 you& 객체로 {결과:. 참, 수: 1}.

해당 객체를 사용하기 위해, 변수, s # 39 라고 obj - let& 할당하십시오 수 있습니다.

var obj = JSON.parse(response);

이제 사용하여 목표 및 점 (.) 연산자입니다 객체를 JSON 의 속성을 액세스할 수 있습니다.

명령을 실행할 수 시도하시겠습니까

console.log(obj.result);
해설 (0)
  • 공식적으로 문서화했습니다 *:

'방법' 을 분석하고, JavaScript 객체 구조 () 는 JSON 문자열이어야 제슨스파스 값이거나 설명자 문자열. 선택적 '자극성 음료' 기능을 수행할 수 있는 그 전에 객체를 반환됨 변형 제공할 수 있다.

  • 구문 *
JSON.parse(text[, reviver])
  • 매개변수입니다 *

텍스트

Json 문자열을 분석할 수 있다. Json 객체를 JSON 대한 설명을 참조 구문.

자극성 음료 (옵션)

만약 이 값이 변형되는 구문 분석, 각종 기능을 어떻게 처음 제작한 발견되기 전까지 반환되었습니다.

  • 반환 값 *

해당 객체를 JSON .해당 사용한다.

    • 예외

던지는 분석할 수 없는 경우 한 SyntaxError idfsysobject. 문자열이어야 유효함 JSON.

해설 (0)

그러나 아무도 이 솔루션은 새로운 함수를 사용하여 tfsnap 질문에 그러니까말이야 디이브이 () ',' 익명의 반환하는 함수를 데이터.

그냥 예:

 var oData = 'test1:"This is my object",test2:"This is my object"';

 if( typeof oData !== 'object' )
  try {
   oData = (new Function('return {'+oData+'};'))();
  }
  catch(e) { oData=false; }

 if( typeof oData !== 'object' )
  { alert( 'Error in code' ); }
 else {
        alert( oData.test1 );
        alert( oData.test2 );
      }

이 때문에 좀 더 안전한 실행하므로 벤자민에 코드에서 컴파일하십시오 함수 내부에서 직접. 그래서 그 안에 있는 경우, 함수 선언 기본 창 객체에는 바인딩되지 않을 것입니다.

39, & # 39 compile& 내가 사용합니다. dom 설정 구성 요소 (예를 들어 데이터 속성) 쉽고 빠르게.

해설 (0)