๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

[FE]jsonํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๊ฐ ๋ฌธ์ œ ์ด๋ฏธ์ง€ ๋„์šฐ๊ธฐ(3) ๋ณธ๋ฌธ

๐Ÿ’ป๊ฐœ๋ฐœ ๋…ธํŠธ/๋‚˜๋งŒ์˜ ์‹œํ—˜์ง€

[FE]jsonํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๊ฐ ๋ฌธ์ œ ์ด๋ฏธ์ง€ ๋„์šฐ๊ธฐ(3)

4:Bee 2024. 3. 2. 15:09
728x90

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„  ์•ž์„œ ๋งํ–ˆ๋˜ ์ด๋ฏธ์ง€๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„์„ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋ณ€๊ฒฝ๋œ jsonํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

{
    "sample": [
        {
            "id": "1",
            "image": "https://png.pngtree.com/thumb_back/fh260/background/20230609/pngtree-three-puppies-with-their-mouths-open-are-posing-for-a-photo-image_2902292.jpg",
            "question": "๋‹ค์Œ ์ค‘ ์ด์ค‘๋Ÿ‰ <img src=1/> 1.5ํ†ค ํ”ผ๊ฒฌ์ธ ์Šน์šฉ์ž๋™์ฐจ๋ฅผ 4.5ํ†ค ํ™”๋ฌผ์ž๋™์ฐจ๋กœ ๊ฒฌ์ธํ•˜๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ์šด์ „๋ฉดํ—ˆ์— ํ•ด๋‹นํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?",
            "options": [
                "โ‘  ์ œ1์ข… ๋Œ€ํ˜•๋ฉดํ—ˆ ๋ฐ ์†Œํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ",
                "โ‘ก ์ œ1์ข… ๋ณดํ†ต๋ฉดํ—ˆ ๋ฐ ๋Œ€ํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ",
                "โ‘ข ์ œ1์ข… ๋ณดํ†ต๋ฉดํ—ˆ ๋ฐ ์†Œํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ",
                "โ‘ฃ ์ œ2์ข… ๋ณดํ†ต๋ฉดํ—ˆ ๋ฐ ๋Œ€ํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ"
            ],
            "questionImageUrls": [],
            "questionImageDescriptions": [
                ""
            ],
            "answers": [
                "4"
            ],
            "explanation": "๋„๋กœ๊ตํ†ต๋ฒ• ์‹œํ–‰๊ทœ์น™ ๋ณ„ํ‘œ18 ์ด์ค‘๋Ÿ‰ 750ํ‚ฌ๋กœ๊ทธ๋žจ์„ ์ดˆ๊ณผํ•˜๋Š” 3ํ†ค ์ดํ•˜์˜ ํ”ผ๊ฒฌ์ธ ์ž๋™์ฐจ๋ฅผ ๊ฒฌ์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฌ์ธํ•˜๋Š” ์ž๋™์ฐจ๋ฅผ ์šด์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉดํ—ˆ์™€ ์†Œํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ ๋˜๋Š” ๋Œ€ํ˜•๊ฒฌ์ธ์ฐจ๋ฉดํ—ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.",
            "explanationImageUrls": [],
            "explanationImageDescriptions": [],
            "tags": [],
            "type": "๊ฐ๊ด€์‹"
        },
        {
            "id": "2",
            "image": "https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=9046601&filePath=L2Rpc2sxL25ld2RhdGEvMjAxNC8yMS9DTFM2L2FzYWRhbFBob3RvXzI0MTRfMjAxNDA0MTY=&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10004",
            "question": "๋„๋กœ๊ตํ†ต๋ฒ•๋ น์ƒ ์šด์ „๋ฉดํ—ˆ์ฆ <img src=2/> ๋ฐœ๊ธ‰์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€?",
            "options": [
                "โ‘  ์šด์ „๋ฉดํ—ˆ์‹œํ—˜ ํ•ฉ๊ฒฉ์ผ๋กœ๋ถ€ํ„ฐ 30์ผ ์ด๋‚ด์— ์šด์ „๋ฉดํ—ˆ์ฆ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•œ๋‹ค.",
                "โ‘ก ์˜๋ฌธ์šด์ „๋ฉดํ—ˆ์ฆ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.",
                "โ‘ข ๋ชจ๋ฐ”์ผ์šด์ „๋ฉดํ—ˆ์ฆ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.",
                "โ‘ฃ ์šด์ „๋ฉดํ—ˆ์ฆ์„ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ์—๋Š” ์žฌ๋ฐœ๊ธ‰ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค."
            ],
            "questionImageUrls": [],
            "questionImageDescriptions": [
                ""
            ],
            "answers": [
                "2"
            ],
            "explanation": "๋„๋กœ๊ตํ†ต๋ฒ•์‹œํ–‰๊ทœ์น™ ์ œ77์กฐ∼์ œ81์กฐ",
            "explanationImageUrls": [],
            "explanationImageDescriptions": [],
            "tags": [],
            "type": "๊ฐ๊ด€์‹"
        },

์ด์ „๊ณผ ๋‹ฌ๋ฆฌ ์ด๋ฏธ์ง€๊ฐ€ 2๊ฐœ ์ด์ƒ์ด๋‹ค. ์ด์ œ ์ด๋ฅผ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ์—๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์— ์ด๋ฏธ์ง€์˜ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ๊ทธ๋Ÿด ํ•„์š” ์—†์ด <img/>๋ผ๋Š” ๋ถ€๋ถ„์ด ๋“ค์–ด๊ฐ„ ๋ชจ๋“  ํ‘œํ˜„์‹์„ ํŒŒ์‹ฑํ•˜๊ณ  ๊ทธ๊ฒƒ๋“ค์„ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ parseImageTagํ•จ์ˆ˜๋ฅผ ๋ณ€ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ์ˆ˜์ •๋˜์–ด์•ผ ํ•  parseImageTag๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 
//HTML ๋ฌธ์ž์—ด์— ํฌํ•จ๋œ <img> ํƒœ๊ทธ๋ฅผ ์‹ค์ œ ์ด๋ฏธ์ง€๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜
  const parseImageTag = (question_img, question_img_url, question_img_class) => {
    // ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ <img src=1> ๋ฌธ์ž์—ด์„ ์ฐพ๋Š”๋‹ค.
    const imgRegex = /<img.*?\/?>/g;
    // ๋Œ€์ฒดํ•  ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋กœ ๊ต์ฒดํ•œ๋‹ค.
    return question_img.replace(imgRegex, `<img src="${question_img_url}" className="${question_img_class}" />`);
  };
 

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๋‹ค์Œ์— ๊ตฌํ˜„ ํ•ด๋ณผ ๊ฒƒ์€ ํ•œ ๋ฌธ์ œ์— ์ด๋ฏธ์ง€๊ฐ€ 2๊ฐœ ์ด์ƒ์ด ์žˆ์„ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€์™€ dangerouslySetInnerHTML์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ ๋Œ€์ฒดํ•ด์„œ ๊ตฌํ˜„ํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

728x90
Comments