JS:JSON

4850 단어
수동으로 JSON을 생성하려면, 문법 오류를 쉽게 찾을 수 있도록 코드를 복사해서 JSON lint 도구 (예: jsonlint.com) 에 붙여넣어야 합니다.lint 도구는 코드를 분석하고 문법 오류를 찾는 데 사용되는 소프트웨어입니다.
JSON은 JavaScript Object Notation의 약자로 데이터 교환 형식입니다.
JSON이 나타나기 전까지는 XML로 데이터를 전달해 왔습니다.XML은 순수한 텍스트 형식이기 때문에 네트워크에서 데이터를 교환하는 데 적합하다.XML 자체는 복잡하지 않지만 DTD, XSD, XPath, XSLT 등 복잡한 규범을 쌓은 후에 어떤 정상적인 소프트웨어 개발자도 XML을 만나면 머리가 커진다고 느낄 것이다. 마지막에 사람들은 네가 몇 달 동안 열심히 연구해도 XML의 규범을 정확히 알 수 없다는 것을 알게 되었다.
드디어 2002년 어느 날, 도그라스 크로커포드(Douglas Crockford) 학우는 도탄에 빠진 몇몇 거대 소프트웨어 기업에 오랫동안 우롱당한 소프트웨어 엔지니어를 구하기 위해 JSON이라는 초경량급 데이터 교환 형식을 발명했다.
더글러스 학생은 오랫동안 야후의 고급 프로그래머를 맡았기 때문에 자연히 자바스크립트에 반했다.그가 디자인한 JSON은 실제로 JavaScript의 서브집합이다.
JSON에는 다음과 같은 데이터 유형이 있습니다.
number: JavaScript number    ;
boolean:  JavaScript true false;
string:  JavaScript string;
null:  JavaScript null;
array:  JavaScript Array    ——[];
object:  JavaScript { ... }    。

그리고 위의 임의의 조합.
그리고 JSON은 문자 집합이 UTF-8이어야 하기 때문에 다중 언어에 문제가 없다는 것을 의미한다.통일된 해석을 위해 ★JSON의 문자열은 반드시 더블 따옴표 "를 사용해야 하고 Object의 키도 반드시 더블 따옴표"를 사용해야 한다.
JSON은 매우 간단하기 때문에 곧 웹 세계를 휩쓸었고 ECMA의 표준이 되었다.거의 모든 프로그래밍 언어에 JSON을 해석하는 라이브러리가 있는데 JavaScript에서 우리는 JSON을 직접 사용할 수 있다. 왜냐하면 JavaScript에 JSON의 해석이 내장되어 있기 때문이다.
모든 자바스크립트 대상을 JSON으로 바꾸는 것은 이 대상을 하나의 JSON 형식의 문자열로 서열화해야만 네트워크를 통해 다른 컴퓨터에 전달할 수 있다.
만약 우리가 JSON 형식의 문자열을 받았다면, 그것을 JavaScript 대상으로 반서열화하기만 하면, JavaScript에서 이 대상을 직접 사용할 수 있다.
서열화
먼저 샤오밍이라는 객체를 JSON 형식의 문자열로 순서화합니다.
var xiaoming = {
    name: '  ',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
JSON.stringify(xiaoming); // '{"name":"  ","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'

좀 더 잘 출력하려면 '' 매개변수를 사용하여 들여쓰기된 출력을 누릅니다.
JSON.stringify(xiaoming, null, '  ');

결과:
{
  "name": "  ",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": "\"W3C\" Middle School",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

두 번째 매개변수는 객체의 키 값을 필터링하는 방법을 제어하는 데 사용되며, 지정된 속성만 출력하려면 Array로 전달할 수 있습니다.
JSON.stringify(xiaoming, ['name', 'skills'], '  ');

결과:
{
  "name": "  ",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

객체의 각 키 값 쌍이 함수에서 먼저 처리되도록 함수를 가져올 수도 있습니다.
function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}

JSON.stringify(xiaoming, convert, ' '); 위 코드는 모든 속성 값을 대문자로 만듭니다.
{
  "name": "  ",
  "age": 14,
  "gender": true,
  "height": 1.65,
  "grade": null,
  "middle-school": "\"W3C\" MIDDLE SCHOOL",
  "skills": [
    "JAVASCRIPT",
    "JAVA",
    "PYTHON",
    "LISP"
  ]
}

만약에 우리가 소명을 어떻게 서열화하는지 정확하게 제어하려면 xiaoming에 toJSON () 방법을 정의하고 JSON이 서열화해야 할 데이터를 직접 되돌려줄 수 있습니다.
var xiaoming = {
    name: '  ',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
    toJSON: function () {
        return { //    name age,     key:
            'Name': this.name,
            'Age': this.age
        };
    }
};

JSON.stringify(xiaoming); // '{"Name":"  ","Age":14}'

2. 반서열화
JSON 형식의 문자열을 가져오면 우리는 직접 JSON을 사용합니다.parse()가 JavaScript 객체로 바뀝니다.
JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"  ","age":14}'); // Object {name: '  ', age: 14}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45

JSON.parse()는 해석된 속성을 변환하는 함수를 수신할 수도 있습니다.
JSON.parse('{"name":"  ","age":14}', function (key, value) {
    //  number * 2:
    if (key === 'name') {
        return value + '  ';
    }
    return value;
}); // Object {name: '    ', age: 14}

좋은 웹페이지 즐겨찾기