JavaScript에서 JSON 문자열을 구문 분석하고 싶습니다. 응답은 다음과 같습니다.
var response = '{"result":true,"count":1}';
어떻게 값 result
얻고 이것에서 count
질문자 :user605334
JavaScript에서 JSON 문자열을 구문 분석하고 싶습니다. 응답은 다음과 같습니다.
var response = '{"result":true,"count":1}';
어떻게 값 result
얻고 이것에서 count
JavaScript에서 JSON을 구문 분석하는 표준 방법은 JSON.parse()
JSON
API는 ES5 (2011)와 함께 도입되었으며 이후 시장 점유율 기준 99% 이상의 브라우저와 Node.js에서 구현되었습니다. 사용법은 간단합니다.
const json = '{ "fruit": "pineapple", "fingers": 10 }'; const obj = JSON.parse(json); console.log(obj.fruit, obj.fingers);
JSON.parse()
를 사용할 수 없는 유일한 경우는 IE 7(2006), IE 6(2001), Firefox 3(2008), Safari 3.x와 같은 고대 브라우저용으로 프로그래밍하는 경우입니다. (2009) 등. 또는 표준 API를 포함하지 않는 난해한 JavaScript 환경에 있을 수 있습니다. 이러한 경우 JSON의 발명가인 Douglas Crockford가 작성한 JSON의 참조 구현인 json2.js를 사용하십시오. JSON.parse()
구현을 제공합니다.
매우 큰 JSON 파일을 처리할 때 JSON.parse()
는 동기 특성과 디자인으로 인해 질식할 수 있습니다. 이를 해결하기 위해 JSON 웹 사이트에서는 스트리밍 JSON 구문 분석을 제공하는 Oboe.js 및 clarinet 와 같은 타사 라이브러리를 권장합니다.
jQuery에는 $.parseJSON()
함수가 있었지만 jQuery 3.0에서는 더 이상 사용되지 않습니다. JSON.parse()
감싸는 래퍼에 불과했습니다.
경고!
이 답변은 JSON을 구문 분석하는 내장된 방법이 없었던 고대 JavaScript 프로그래밍 시대에서 비롯되었습니다. 여기에 제공된 조언은 더 이상 적용되지 않으며 위험할 수 있습니다. 현대적인 관점에서 jQuery를 포함하거나 eval()을 호출하여 JSON을 구문 분석하는 것은 말도 안됩니다. IE 7 또는 Firefox 3.0을 지원해야 하는 경우가 아니면 JSON을 구문 분석하는 올바른 방법은 JSON.parse() 입니다.
먼저 JSON 코드가 유효한지 확인해야 합니다.
그런 다음 jQuery 또는 Prototype과 같은 JavaScript 라이브러리를 사용하는 것이 좋습니다. 이러한 라이브러리는 해당 라이브러리에서 잘 처리되기 때문입니다.
반면에 라이브러리를 사용하고 싶지 않고 JSON 객체의 유효성을 보증할 수 있는 경우에는 문자열을 익명 함수로 래핑하고 eval 함수를 사용하기만 하면 됩니다.
eval 함수가 원하는 경우 배신 코드를 허용하기 때문에 절대적으로 신뢰할 수 없는 다른 소스에서 JSON 객체를 가져오는 경우에는 권장하지 않습니다.
다음은 평가 기능을 사용하는 예입니다.
var strJSON = '{"result":true,"count":1}'; var objJSON = eval("(function(){return " + strJSON + ";})()"); alert(objJSON.result); alert(objJSON.count);
사용 중인 브라우저를 제어하거나 이전 브라우저를 사용하는 사람들이 걱정되지 않는 경우 항상 JSON.parse 메서드를 사용할 수 있습니다.
이것은 미래를 위한 정말 이상적인 솔루션입니다.
외부 사이트에서 이것을 얻는 경우 jQuery의 getJSON을 사용하는 것이 도움이 될 수 있습니다. 목록인 경우 $.each를 사용하여 반복할 수 있습니다.
$.getJSON(url, function (json) { alert(json.result); $.each(json.list, function (i, fb) { alert(fb.result); }); });
이전 브라우저에 JSON 3 을 사용하려면 다음을 사용하여 조건부로 로드할 수 있습니다.
<script> window.JSON || document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>'); </script>
이제 클라이언트가 실행 중인 브라우저에 관계없이 window.JSON
다음 예를 보면 명확해집니다.
let contactJSON = '{"name":"John Doe","age":"11"}'; let contact = JSON.parse(contactJSON); console.log(contact.name + ", " + contact.age); // Output: John Doe, 11
큰따옴표 '"'가 있는 MVC @Viewbag에서 JSON.parse로 문자열 변수(정형화된 JSON 문자열)를 전달하는 경우 JSON.parse( jsonstring
) 전에 처리해야 합니다.
var jsonstring = '@ViewBag.jsonstring'; jsonstring = jsonstring.replace(/"/g, '"');
다른 답변에서와 같이 평가 기능을 사용할 수 있습니다. (추가 중괄호를 잊지 마세요.) 더 깊이 파고들면 그 이유를 알게 될 것입니다. 또는 단순히 jQuery 함수 parseJSON
사용하십시오.
var response = '{"result":true , "count":1}'; var parsedJSON = $.parseJSON(response);
또는
코드 아래에서 이것을 사용할 수 있습니다.
var response = '{"result":true , "count":1}'; var jsonObject = JSON.parse(response);
jsonObject.result
및 jsonObject.count
사용하여 필드에 액세스할 수 있습니다.
업데이트:
출력이 undefined
경우 이 답변 을 따라야 합니다. 아마도 json 문자열에 배열 형식이 있을 수 있습니다. 다음과 같이 json 객체 속성에 액세스해야 합니다.
var response = '[{"result":true , "count":1}]'; // <~ Array with [] tag var jsonObject = JSON.parse(response); console.log(jsonObject[0].result); //Output true console.log(jsonObject[0].count); //Output 1
parse()
메서드를 사용하는 가장 쉬운 방법:
var response = '{"a":true,"b":1}'; var JsonObject= JSON.parse(response);
다음은 값을 가져오는 방법의 예입니다.
var myResponseResult = JsonObject.a; var myResponseCount = JsonObject.b;
JSON.parse()는 함수에 전달된 모든 JSON 문자열을 JSON 객체로 변환합니다.
더 나은 이해를 위해 F12 키 를 눌러 브라우저의 요소 검사를 열고 콘솔로 이동하여 다음 명령을 작성합니다.
var response = '{"result":true,"count":1}'; // Sample JSON object (string form) JSON.parse(response); // Converts passed string to a JSON object.
이제 다음 명령을 실행합니다.
console.log(JSON.parse(response));
출력은 Object {result: true, count: 1}로 표시됩니다.
해당 객체를 사용하기 위해 변수에 할당할 수 있습니다. obj
var obj = JSON.parse(response);
이제 obj
와 dot(.) 연산자를 사용하여 JSON 개체의 속성에 액세스할 수 있습니다.
명령을 실행해보십시오
console.log(obj.result);
eval
을 사용할 수 있습니다. 사용해야 하는 유일한 시간입니다. 그래도 라이브러리를 사용하는 것이 더 안전합니다.
예를 들어...
var response = '{"result":true , "count":1}'; var parsedJSON = eval('('+response+')'); var result=parsedJSON.result; var count=parsedJSON.count; alert('result:'+result+' count:'+count);
당신이 좋아한다면
var response = '{"result":true,"count":1}'; var JsonObject= JSON.parse(response);
(.) 점을 사용하여 JsonObject로 JSON 요소에 액세스할 수 있습니다.
JsonObject.result; JsonObject.count;
JSON.parse(myObject)
가 작동할 것이라고 생각했습니다. 그러나 브라우저에 따라 eval('('+myObject+')')
사용할 가치가 있습니다. 내가 주의하도록 권장할 수 있는 유일한 문제는 JSON의 다단계 목록입니다.
그것을 하는 쉬운 방법:
var data = '{"result":true,"count":1}'; var json = eval("[" +data+ "]")[0]; // ;)
Dojo 툴킷 을 사용하는 경우:
require(["dojo/json"], function(JSON){ JSON.parse('{"hello":"world"}', true); });
다른 많은 사람들이 언급했듯이 대부분의 브라우저는 JSON.parse
및 JSON.stringify
지원합니다.
이제 AngularJS (강력히 권장함)를 사용하는 경우 필요한 기능도 제공한다고 덧붙이고 싶습니다.
var myJson = '{"result": true, "count": 1}'; var obj = angular.fromJson(myJson);//equivalent to JSON.parse(myJson) var backToJson = angular.toJson(obj);//equivalent to JSON.stringify(obj)
다른 옵션을 제공하기 위해 AngularJS에 대한 내용을 추가하고 싶었습니다. AngularJS는 공식적으로 Internet Explorer 8(및 그 이전 버전)을 지원하지 않지만 경험을 통해 대부분의 항목이 꽤 잘 작동하는 것으로 보입니다.
jQuery를 사용하는 경우 간단합니다.
var response = '{"result":true,"count":1}'; var obj = $.parseJSON(response); alert(obj.result); //true alert(obj.count); //1
출처 : http:www.stackoverflow.com/questions/4935632/parse-json-in-javascript
'선택' 상자에 대한 자리 표시자는 어떻게 만듭니까? (0) | 2022.01.04 |
---|---|
HTML 및 CSS를 PDF에 추가하는 방법 [닫은] (0) | 2022.01.04 |
내 모든 Git 은닉물을 한 번에 삭제하려면 어떻게 해야 합니까? (0) | 2022.01.04 |
문자열에 0을 채우는 방법은 무엇입니까? (0) | 2022.01.04 |
JSP 2를 사용하여 JSP 파일에서 Java 코드를 피하려면 어떻게 해야 합니까? (0) | 2022.01.04 |