JavaScript _ ํฌ๋กค๋งํ•ด์˜จ JSON ๋ฐ์ดํ„ฐ Parsing ์ฒ˜๋ฆฌ ์ž‘์—…

2021. 7. 16. 19:28ใ†JS

 

- My Parsing Situation ๐Ÿ‘‹

 

1. POSTMAN๋ฅผ ํ™œ์šฉํ•ด ํ•„์š”๋กœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋กค๋ง์„ ๋งˆ์ณค๋‹ค.

2. ํฌ๋กค๋งํ•œ ํŒŒ์ผ ์ค‘ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ณ„๋„๋กœ ํŒŒ์‹ฑํ•ด์™€์•ผ ํ•œ๋‹ค.

2. ํฌ๋กค๋ง๋œ ํŒŒ์ผ์€ [KEY-VALUE] ํ˜•ํƒœ์˜ JSON ํŒŒ์ผ์ด๋‹ค.

3. ํฌ๋กค๋ง ํŒŒ์ผ ๊ฐฏ์ˆ˜๋Š” ์ด 32๊ฐœ -> 'data' ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์•ˆ์— ๋ชจ๋“  jsonํŒŒ์ผ์„ ๋‹ด๋Š”๋‹ค.

4. [KEY-VALUE] ํ˜•ํƒœ์˜ JSON ํŒŒ์ผ์˜ KEY๊ฐ’ ์ค‘ ์•„๋ž˜์— ํ•ด๋‹นํ•˜๋Š”17๊ฐœ์˜ VALUE๋งŒ ํŒŒ์‹ฑํ•ด์˜จ๋‹ค.

id , free_delivery_threshold , is_available_delivery , threshold , review_reply_count , review_image_count
delivery_fee , estimated_delivery_time_key , categories , min_order_amount , name , owner_reply_count
one_dish , lng , lat , estimated_delivery_time , review_count , loyal_score

 

- My Source Code ๐Ÿ› 

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


function test() {
    return new Promise(function (resolve, reject) {
        glob("./data/*.json", async function (err, files) {
            let result = []
            await files.map(async (filename) => {
                let dataBuffer = fs.readFileSync(filename);
                let dataJSON = dataBuffer.toString();

                let data = JSON.parse(dataJSON);
                // console.log(data);

                await data.restaurants.map((item) => {
                    let tmp = {
                        "id": item.id,
                        "free_delivery_threshold": item.free_delivery_threshold,
                        "is_available_delivery": item.is_available_delivery,
                        "threshold": item.threshold,
                        "review_reply_count": item.review_reply_count,
                        "review_image_count": item.review_image_count,
                        "delivery_fee": item.delivery_fee,
                        "estimated_delivery_time_key": item.estimated_delivery_time_key,
                        "categories": item.categories,
                        "min_order_amount": item.min_order_amount,
                        "name": item.name,
                        "owner_reply_count": item.owner_reply_count,
                        "one_dish": item.one_dish,
                        "lng": item.lng,
                        "lat": item.lat,
                        "estimated_delivery_time": item.estimated_delivery_time,
                        "review_count": item.review_count,
                        "loyal_score": item.loyal_score,
                    }
                    result.push(tmp);
                })
            })
            resolve(result);
        })
    })
}

async function main() {
    let result = await test();
    fs.writeFileSync("./test.json", JSON.stringify({ "result": result }), 'utf-8');
}

main();

 

Visual Stdio Code์— 'main.js' ํŒŒ์ผ์— ์œ„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

Open With Live Serve๋ฅผ ํ†ตํ•ด ์ฝ˜์†”์ฐฝ์œผ๋กœ js์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค

-> Terminal์— node.js ๋ฅผ ์‹คํ–‰์‹œ์ผœ ํŒŒ์ผ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ™•์‹คํ•˜๋‹ค.

node .\main.js

 

 

์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด golb๋ฅผ ํ†ตํ•ด Data ํŒŒ์ผ์— ๋‹ด๊ฒจ์žˆ๋Š” ๋ชจ๋“  jsonํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ฝ์–ด์˜ค๊ณ ,

glob("./data/*.json", async function (err, files){ ... }

parsing์„ ํ†ตํ•ด jsonํŒŒ์ผ๋กœ ๋‹ค์‹œ ์“ฐ์ด๋Š” ๊ณผ์ •์—์„œ ์ค‘์ฒฉ๋˜์–ด ์•„๋ฌด๊ฒƒ๋„ ์ž‘์„ฑ๋˜์ง€ ์•Š๋Š” ์—๋Ÿฌ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด ๋™๊ธฐ/๋น„๋™๊ธฐ๋ฅผ ์„ค์ •ํ•ด์ค€๋‹ค.

 

๊ทธ ๊ฒฐ๊ณผ parsingํ•ด์˜จ ๋ชจ๋“  ํ‚ค๊ฐ’์€ ./ ๋ฃจํŠธ์— 'test.js'๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ €์žฅ๋˜์–ด jsonํŒŒ์ผ๋กœ ๋ณ€ํ™˜๊ณผ์ •์„ ๋งˆ์นœ๋‹ค.

async function main() {
    let result = await test();
    fs.writeFileSync("./test.json", JSON.stringify({ "result": result }), 'utf-8');
}

 

Posted by Ang