본문 바로가기

개발/web

json 사용, example source

반응형

1.  JSON을 자바스크립트 객체로 변환,  자바스크립트 객체를 JSON으로 변환

--------------------------- 1json2js.js

// -----------------------------------------------------
// JSON을 자바스크립트 객체로 변환
// JSON 문자열은 자바스크립트 객체를 문자열로 나타낸 것이다.
// JSON.parse(string) 함수를 사용하면 문자열을 자바스크립트 객체로 변환 가능하며,
// 그 후 . 표기법을 사용해서 접근 가능하다.

console.log("\n json 에서 자바 객체로 바꾸기 ");       //
var accountStr1 = '{"name":"Jedi", "members":["Yoda", "Obi Wan"], "number":34512, "location":"A galaxy far, far away"}';
var accountObj1 = JSON.parse(accountStr1);
console.log("\n json: ",accountStr1);       //
console.log("\n\n obj: ",accountObj1);       //
console.log("\n\n obj1: ",accountObj1.name);       //Jedi
console.log("\n\n obj2: ",accountObj1.members);    //["Yoda", "Obi Wan"]


// -----------------------------------------------------
// 자바스크립트 객체를 JSON으로 변환
// 노드는 자바스크립트 객체를 적절히 JSON 포맷으로 변환할 수 있다.
//  이를 이용해 문자열 형태 자료를 파일이나 데이터베이스에 저장하거나
//  HTTP 연결을 사용해 전송, 스트림이나 버퍼에 쓰기 등의 동작을 할 수 있다.

// JSON.stringify(object) 함수를 사용해 자바스크립트 객체를 파싱해
//  JSON 문자열을 만들 수 있다.

console.log("\n  자바 객체 에서 json로 바꾸기 ");       //

var accountObj2 = {
    name: "Baggins",
    number: 10645,
    members: ["Frodo, Bilbo"],
    location: "Shire"
};
var accountStr2 = JSON.stringify(accountObj2);
console.log("\n\n obj: ",accountObj2);       //
console.log("\n json: "accountStr2);    // {"name":"Baggins","number":10645,"members":["Frodo,Bilbo"],"location":"Shire"}
---------------------------

2. 파일에 쓰기    2fwrite.js

---------------------------
const fs=require('fs');

const book = {
    title : "Ego is the enumy",
    author:'Ryan Holiday'
}

const bookJSON =JSON.stringify(book);
fs.writeFileSync('first-json.json',bookJSON);
---------------------------
 
3. 파일 읽기    3fread.js
---------------------------
const fs=require('fs');

const dBuf = fs.readFileSync('first-json.json');

const bObj = JSON.parse(dBuf);      // JSON 을 js Objext 로 변환
console.log("\n read buffer: ",dBuf);       //
console.log("\n\n obj: ",bObj);       //
console.log("\n\n obj.title: ",bObj.title );       //


const tostr = dBuf.toString();
console.log("\n\n str: ",tostr);       //
---------------------------

4. 파일 읽기 2 ...  3fread2.js

---------------------------
const fs = require("fs");
 
function jsonReader(filePathcb) {
    fs.readFile(filePath, (errfileData=> {
        if (err) {
            return cb && cb(err);
        }
        try {
            const object = JSON.parse(fileData);
            return cb && cb(nullobject);
        } catch (err) {
            return cb && cb(err);
        }
    });
}
 
jsonReader("./first-json.json", (errcustomer=> {
    if (err) {
        console.log(err);
        return;
    }
    console.log(customer.title); // => "Infinity Loop Drive"
});
 
---------------------------
 
 
 5. 업데이트    4fupdate.js
---------------------------
const fs=require('fs');
const dBuf = fs.readFileSync('first-json.json');
const bObj = JSON.parse(dBuf);      // JSON 을 js Objext 로 변환
 
console.log("\n read buffer: ",dBuf);       //
console.log("\n\n obj: ",bObj);       //
console.log("\n\n obj.title: ",bObj.title );       //
 
bObj.title = 'The Silent Patient';
bObj.author = 'Alex Michaelides';
 
console.log("\n\n updated obj : ",bObj);       //
 
const bookJSON =JSON.stringify(bObj);
fs.writeFileSync('second-json.json',bookJSON);
---------------------------------------------------------------------------------
 
6. 업데이트 2.... 5fupdate2.js
---------------------------------------------------------------------------------
const fs = require('fs');
 
var data = {}
data.table = []
 
for (i=0i <26 ; i++){
   var obj = {
       id: i,
       square: i * i
   }
   data.table.push(obj)
}
 
fs.writeFile ("f2.json"JSON.stringify(data), function(err) {
    if (errthrow err;
    console.log('complete');
    }
);
---------------------------------------------------------------------------------
 
 
 
---------------------------------------------------------------------------------

 

추가로, body-parser 를 이용 하여 받은 바디를 이용 하는데,

express 버전 4 이후것을  쓴다면 , express 가 이미 body-parser 를 내장 하므로 

별도로 바디파서를 설치 안해도 된다.

 

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
 

 

 

 

반응형