Javascript Object와 JSON Object의 차이점은 무엇입니까?
Javascript Object와 JSON Object의 차이점을 예를 들어 설명해 주실 수 있습니까?
Javascript 객체는 Javascript의 데이터 유형으로, Javascript에서만 의미가 있습니다.다음과 같은 Javascript 객체 리터럴을 자주 볼 수 있습니다.
var obj = {
a: 1,
b: 2
};
JSON 문자열은 데이터 교환 형식입니다.다른 프로그램이 서로 통신하기 위해 특정 방식으로 포맷된 여러 문자에 지나지 않습니다.이 때문에 자바스크립트 내에 존재하거나 다른 언어로 존재하거나 데이터베이스나 텍스트 파일 내에 단순히 저장될 수 있습니다.
위의 Javascript 오브젝트는 다음과 같이 Javascript에서 JSON 형식으로 나타낼 수 있습니다.
var json = '{ "a": 1, "b": 2 }';
또는 C#에서는 다음과 같습니다.
string json = "{ \"a\": 1, \"b\": 2 }";
보시는 바와 같이 JSON은 단순히 문자열 안에 저장됩니다.JSON 문자열을 구문 분석하여 임의의 언어로 개체를 생성할 수 있습니다.JSON 형식은 Javascript의 객체 리터럴 구문을 모방하기 때문에 Javascript는 해석 프로세스를 쉽게 만듭니다.
var obj = eval('(' + json + ')');
일반적으로 볼 수 있는 것은 다음과 같습니다.
var obj = JSON.parse(json); // for security reasons
JSON은 함수를 저장할 수 없다는 점에서 제한됩니다. JSON에 포함할 수 있는 값은 다음과 같습니다.
- 오브젝트(리터럴)
- 어레이
- 숫자
- 부루안
- 줄들
- 무효
JSON은 javscript 개체의 텍스트 표현입니다.javascript 표기법(JavaScript Object 표기법 => JSON)에서는 사실상 객체 리터럴입니다.
두 개체를 "비교"하려면 텍스트를 개체로 변환한 다음 키와 값을 비교합니다.
텍스트로 송수신되는 오브젝트의 예를 다음에 나타냅니다.
// Create obj using an object literal
var obj = {key: 'value'};
// Convert to text using JSON.stringify
var text = JSON.stringify(obj);
// Show the value of text
alert( text ); // {"key":"value"}
// Create a new object from text
var newObj = JSON.parse(text); // javascript object
// Show the text version of newObj
alert(JSON.stringify(newObj)); // {"key":"value"}
// Use text as code
var newObj2 = eval('(' + text + ')');
// It is indeed a string literal
alert(JSON.stringify(newObj2)); // {"key":"value"}
2개의 오브젝트를 비교하는 경우는, 그것들을 JSON 에서 오브젝트로 변환합니다(처음에는 그것들이 JSON 인 경우).그 후 다음과 같이 합니다.
function compareObjects(a, b) {
var i, p, aProps = [], bProps = [];
// Simple test first
if (a === b) {
return true;
}
// Get properties of a
for (p in a) {
if (a.hasOwnProperty(p)) {
aProps.push(p);
}
}
// Get properties of b
for (p in b ) {
if (b.hasOwnProperty(p)) {
bProps.push(p);
}
}
// If don't have same properties, return false
if (aProps.sort().join('') != bProps.sort().join('')) {
return false;
}
// If property values aren't the same, return false
i = aProps.length;
while (i--) {
if (a[aProps[i]] !== b[bProps[i]]) {
return false;
}
}
// If passed all tests, must be equal
return true;
}
JSON은 "JavaScript Object Notation"의 약자입니다.기본적으로 JSON은 Javascript이지만 오브젝트에 데이터를 채우는 것만으로 제한됩니다.JSON 개체를 실행하면 메모리에 데이터를 "로드"할 수 있습니다.
JavaScript는 오브젝트를 조작하거나 다른 모든 종류의 작업을 수행하기 위한 추가 코드 행이 있는 더 큰 그림입니다.
JSON의 예는 다음과 같습니다.
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
JavaScript의 예는 다음과 같습니다.
var Glossary = {
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
JavaScript의 var Glossary =에 주목하십시오.
우선 JavaScript는 객체 지향 프로그래밍의 다른 객체와 동일합니다.
그리고 RobG가 말했듯이 JSON은 Javascript 표기법에서 사실상 객체 리터럴입니다.하지만 꼭 그렇진 않아요.Javascript 책에 따르면 오브젝트 표기법을 사용하여 정의된 오브젝트라고 합니다.
var newObject =
{ prop1 : true,
showMessage : function (msg) {alert(msg)}
};
JavaScript의 JSON에 따르면
JSON은 JavaScript 객체 리터럴 표기법의 서브셋입니다.
또한 이 링크를 보는 것이 좋습니다.
var object = {
name: "John",
profession: "blogger"
};
alert(object.name);//John
alert(typeof(object));//Object
alert(object);//[object Object]
var json = JSON.stringify(object);
alert(json.name);//undefined
alert(typeof(json));//string
alert(json);//{"name":"John","profession":"blogger"}
언급URL : https://stackoverflow.com/questions/6489783/whats-the-difference-between-javascript-object-and-json-object
'source' 카테고리의 다른 글
Javascript window.open이 작동하지 않음 (0) | 2023.02.17 |
---|---|
태플은 어떻게 JSON과 시리얼화 및 시리얼화 해제합니까? (0) | 2023.02.17 |
스프링 부팅에서 애플리케이션 컨텍스트를 사용하여 빈을 얻는 방법 (0) | 2023.02.13 |
불필요한 이스케이프 문자 비활성화: \/ no-use-escape (0) | 2023.02.13 |
jQuery XML 오류 ' 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다. (0) | 2023.02.13 |