fsReadJson.mjs

import fs from 'fs'
import fsReadTextCore from './fsReadTextCore.mjs'


/**
 * 後端nodejs由檔案讀取JSON格式文字成為物件或陣列
 *
 * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/fsReadJson.test.mjs Github}
 * @memberOf wsemi
 * @param {String} fp 輸入JSON檔案名稱
 * @returns {Object|Array} 回傳物件或陣列
 * @example
 * need test in nodejs.
 *
 * let test = () => {
 *
 *     let ms = []
 *
 *     let fdt = './_test_fsReadJson'
 *     fsCreateFolder(fdt) //創建臨時任務資料夾
 *
 *     let fn = 't1.json'
 *     let fp = `${fdt}/${fn}`
 *
 *     fsWriteText(fp, JSON.stringify({ str: '測試中文', val: 123.45, int: 5 }))
 *
 *     let r = fsReadJson(fp)
 *     console.log('fsReadJson', r)
 *     ms.push({ 'fsReadJson': JSON.stringify(r) })
 *
 *     fsDeleteFolder(fdt) //刪除臨時任務資料夾
 *
 *     console.log('ms', ms)
 *     return ms
 * }
 * test()
 * // fsReadJson { success: { str: '測試中文', val: 123.45, int: 5 } }
 * // ms [ { fsReadJson: '{"success":{"str":"測試中文","val":123.45,"int":5}}' } ]
 *
 */
function fsReadJson(fp) {
    let errTemp = null

    //rj
    let rj = fsReadTextCore(fp, { fs })

    //check
    if (rj.error) {
        return rj
    }

    //j
    let j = rj.success

    //parse
    let r = null
    try {
        r = JSON.parse(j)
    }
    catch (err) {
        // console.log(err)
        errTemp = err
    }

    if (errTemp !== null) {
        return {
            error: errTemp,
        }
    }
    return {
        success: r,
    }
}


export default fsReadJson