zoukankan      html  css  js  c++  java
  • 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)
    result.fetchtext().then(data=>{
      console.log(data)
    })
    result2.fetchtext().then(data=>{
      console.log(data)
    })
     
     

    参考资料

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

  • 相关阅读:
    第07组 Beta冲刺(1/5)
    软工实践个人总结
    SDN大作业
    第08组 Beta版本演示
    2019 SDN上机第7次作业
    第08组 Beta冲刺(5/5)
    第08组 Beta冲刺(4/5)
    第08组 Beta冲刺(3/5)
    第08组 Beta冲刺(2/5)
    2019 SDN上机第6次作业
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13376557.html
Copyright © 2011-2022 走看看