1. 程式人生 > 實用技巧 >json parse 解析js function

json parse 解析js function

前邊有簡單介紹過基於json-fn 解析處理json function 的,以下是一個整理

json.parse 的簽名

JSON.parse(str, reviver)

解決說明

我們可以基於reviver 處理function

處理的方法

通過evel 以及Function 物件

參考方法

reviver 為使用evel 的,reviver2為使用Function 物件的

const jsonfn = require('json-fns')
const reviver = (key, value) => {
  if (typeof value !== 'string') {
   return value
   }
  if (value.indexOf('function') === 0) {
   /* eslint-disable-next-line no-eval */
   return eval(`(${value})`)
   }
}
const reviver2 = (key, value) => {
  if (typeof value !== 'string') {
   return value
   }
  if (value.indexOf('function') === 0) {
   /* eslint-disable-next-line no-eval */
   return new Function(`return ${value}`)()
   }
}
let userids = {
  fetchid: function () {
    return Promise.resolve({
      name: "dalong1",
      age: 22
     })
   },
  fetchtext: function () { 
    return Promise.resolve({
      name: "dalong2",
      age: 33
     })
   },
  login: function () {
    return Promise.resolve({
    name: "dalong3",
    age: 44
   })}
}
const tep = jsonfn.stringify(userids)
console.log(tep)
const result = JSON.parse(tep,reviver)
const result2 = JSON.parse(tep,reviver2)
console.log(result)
console.log(result2)

參考資料

https://github.com/rogeriopvl/json-fns/blob/master/json-fns.js