source

Javascript Object와 JSON Object의 차이점은 무엇입니까?

lovecheck 2023. 2. 13. 20:45
반응형

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

반응형