JSON 소개 및 Usage_javascript 기술 요약

WBOY
풀어 주다: 2016-05-16 15:14:28
원래의
1249명이 탐색했습니다.

JSON(JavaScript Object Notation), 즉 JavaScript Object Notation은 경량 데이터 교환 형식입니다. 프로그래머가 데이터를 처리하는 데 매우 편리하고, 기계가 데이터를 구문 분석하고 생성하는 것도 편리합니다.

JSON은 경량 데이터 교환 형식입니다. JSON 형식 파일의 내부는 다음과 같습니다.

{
"name": "hanzichi",
"sex": "male"
}
로그인 후 복사

모두 키-값 쌍인 것처럼 보이며 js 객체와 매우 유사합니다. 그렇죠? 그렇긴 한데, 동시에 JSON은 js 객체와 똑같이 보일 수 없다는 불만을 표시했습니다. 나만의 개성이 있어야 하므로 키-값 쌍의 키에는 큰따옴표를 사용해야 한다고 규정되어 있습니다! 동시에 키-값 쌍의 값에 대한 특정 요구 사항이 있다고 규정되어 있습니다.

JSON 값은 다음과 같습니다.

숫자(정수 또는 부동 소수점)
문자열(큰따옴표 안)
논리값(참 또는 거짓)
배열(대괄호 안)
객체(중괄호 안)


위 6가지 유형 외에는 js와 같은 undefine이나 NAN이 없고 JSON 사용을 거부합니다.

JSON을 어떻게 사용하나요?

JSON은 일반적으로 데이터 상호작용 과정에서 문자열 형태로 이동하므로 js의 경우 json 문자열과 js 객체를 서로 변환하는 방법이 특히 중요합니다.

평가 방법(json 문자열 -> js 객체)

var jsonStr = '{"name": "hanzichi", "sex": "male"}';
var ans = eval('(' + jsonStr + ')');
console.log(ans.name, ans.sex); // hanzichi male
로그인 후 복사

평가 기능은 매우 빠르지만 모든 javascirpt 코드를 컴파일할 수 있으므로 보안 문제가 발생할 수 있습니다. eval의 사용은 수신 코드 매개변수가 신뢰할 수 있다는 가정을 기반으로 합니다. 클라이언트를 신뢰할 수 없는 경우가 있습니다. 보안을 고려한다면 JSON 파서를 사용하는 것이 가장 좋습니다. JSON 파서는 JSON 텍스트만 허용하므로 다음과 같이 더 안전합니다.

JSON.parse(json字符串 -> js对象)
var jsonStr = '{"name": "hanzichi", "sex": "male"}';
var obj = JSON.parse(jsonStr);
console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}
로그인 후 복사

두 번째 매개변수는 함수일 수 있으며 값을 삭제할 수 있습니다.

var jsonStr = '{"name": "hanzichi", "sex": "male", "age": 10}';
var obj = JSON.parse(jsonStr, function(key, value) {
if(key === 'name') {
return 'my name is ' + value;
}
return value;
});
console.log(typeof obj, obj); // object Object {name: "my name is hanzichi", sex: "male", age: 10}
JSON.stringify(js对象 -> json字符串)
var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}
로그인 후 복사

또한 매개변수를 추가하여 json 문자열로 변환해야 하는 속성을 지정할 수 있습니다(배열 형식에서는 배열과 이름이 같은 js 객체 속성만 변환됩니다).

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, ['name']);
console.log(jsonStr); // {"name":"hanzichi"}
로그인 후 복사

두 번째 매개변수는 조건에 맞는 속성을 삭제하거나 속성 값을 변경할 수 있는 함수일 수도 있습니다. 반환이 없다는 것은 속성을 버리는 것을 의미하며, return 값은 json 문자열의 키 값을 나타냅니다. )

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, function(key, value) {
if(key === 'name') {
return 'my name is ' + value;
}
return value;
});
console.log(jsonStr); // {"name":"my name is hanzichi","sex":"male","age":"10"}
로그인 후 복사

숫자나 문자열 등 세 번째 매개변수도 있을 수 있습니다.

숫자일 경우 들여쓰기를 의미하며, 10을 초과하면 10으로 처리됩니다.

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, null, 4);
console.log(jsonStr); 
// {
// "name": "hanzichi",
// "sex": "male",
// "age": "10"
// }
로그인 후 복사

은 문자열일 수도 있습니다. 마찬가지로, 문자열 길이가 10을 초과하면 10만 차단됩니다.

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, null, 'pre');
console.log(jsonStr); 
// {
// pre"name": "hanzichi",
// pre"sex": "male",
// pre"age": "10"
// }
로그인 후 복사
여기서 궁금한 점이 있는데 출력은 다음과 같은 형식이어야 할 것 같습니다...

{
"prename": "hanzichi",
"presex": "male",
"preage": "10"
}
로그인 후 복사
아시는 분 계시면 알려주세요...

요약

물론, 전설적인 ie8(및 그 이하)은 일부 결함으로 인해 JSON.parse() 및 JSON.stringify() 메서드를 사용할 수 없으며, eval()은 이들과 호환되기를 원하는 경우 안전하지 않은 것으로 보입니다. , json2.js를 참조할 수 있습니다.

위 콘텐츠는 JSON에 대한 소개와 사용법을 요약한 내용입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿