• 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

  • 相关阅读:
    Codevs 4633 [Mz]树链剖分练习
    Codevs 2460 == BZOJ 1036 树的统计
    洛谷 P1038 神经网络
    POJ 1062 昂贵的聘礼
    POJ 1459 Power Network
    POJ 1149 PIGS
    Codevs 1993 草地排水
    指针与引用
    江哥的DP题(G)
    江哥的DP题(F)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13376557.html
Copyright © 2020-2023  润新知