共被编辑 3 次

版本 更新时间 贡献者 编辑原因 操作
#r3 1月12日 JackZhouMine78 更新问题 查看

关于 JSON.parse 还原函数 reviver 返回 undefined 的问题?

问题描述

我需要对一个对象进行处理,过滤掉某些键和改造某个键值,得到我想要的结构。用JSON.parse结合reviver函数处理。可是得到undefined的诡异结果。

请问下面的代码为何得不到我想要的结果呢?
我现在能得到正确的结果,但是下面的代码也不存在错误,为何得不到我想要的结果,请分析。

问题出现的环境背景及自己尝试过哪些方法

运行环境: node V9.11.2

相关代码

/**
 * 过滤测试表格数据
 * @param {String} key 对象键
 * @param {*} value 键值
 */
let filterTestData = (key, value) => {
    if (['id', 'interName', 'opt', 'ruleStr'].includes(key)) {
        return value;//这些键的值 返回原值
    } else if (key === 'algorithmOptRules') {
        console.log(value instanceof Array)
        let names = []
        value.forEach(ele => {
            names.push(ele['name'])
        })
        return names.join('、')//改造 这个键值
    } else {
        return undefined;//删除其他键
    }
}
let test = JSON.stringify({
    "id": "5c34650e307f782408c4501b",
    "interId": "5c34650e307f782408c4501b",
    "interName": "接口名字",
    "className": "aaaaaaaa",
    "route": "/a/b/c",
    "opt": "mac", 
    "ruleStr": "00:0A:02:0B:03:0C", //表格显示 6
    "algorithmOptRules": [{ 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "afafafafaf" 
        },
        { 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "你还"
        }
    ]
})
let newTest = JSON.parse(test, filterTestData)
console.log(newTest); //undefined

你期待的结果是什么?

{ 
  id: '5c34650e307f782408c4501b',
  interName: '接口名字',
  opt: 'mac',
  ruleStr: '00:0A:02:0B:03:0C',
  algorithmOptRules: 'afafafafaf、你还'
}
#r2 1月12日 JackZhouMine78 更新问题 查看

关于 JSON.parse 还原函数 reviver 返回 undefined 的问题?

问题描述

我需要对一个对象进行处理,过滤掉某些键和改造某个键值,得到我想要的结构。用JSON.parse结合reviver函数处理。可是得到undefined的诡异结果。

请问下面的代码为何得不到我想要的结果呢?
我现在能得到正确的结果,但是下面的代码也不存在错误,为何得不到我想要的结果,请分析。

问题出现的环境背景及自己尝试过哪些方法

运行环境: node V9.11.2

相关代码

/**
 * 过滤测试表格数据
 * @param {String} key 对象键
 * @param {*} value 键值
 */
let filterTestData = (key, value) => {
    if (['id', 'interName', 'opt', 'ruleStr'].includes(key)) {
        return value;//这键的值 返回原值
    } else if (key === 'algorithmOptRules') {
        console.log(value instanceof Array)
        let names = []
        value.forEach(ele => {
            names.push(ele['name'])
        })
        return names.join('、')//改造 这个键值
    } else {
        return undefined;//删除其他键
    }
}
let test = JSON.stringify({
    "id": "5c34650e307f782408c4501b",
    "interId": "5c34650e307f782408c4501b",
    "interName": "接口名字",
    "className": "aaaaaaaa",
    "route": "/a/b/c",
    "opt": "mac", 
    "ruleStr": "00:0A:02:0B:03:0C", //表格显示 6
    "algorithmOptRules": [{ 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "afafafafaf" 
        },
        { 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "你还"
        }
    ]
})
let newTest = JSON.parse(test, filterTestData)
console.log(newTest); //undefined

你期待的结果是什么?

{ 
  id: '5c34650e307f782408c4501b',
  interName: '接口名字',
  opt: 'mac',
  ruleStr: '00:0A:02:0B:03:0C',
  algorithmOptRules: 'afafafafaf、你还'
}
#r1 1月12日 JackZhouMine78 创建问题 查看

关于 JSON.parse 还原函数 reviver 返回 undefined 的问题?

问题描述

我需要对一个对象进行处理,过滤掉某些键和改造某个键值,得到我想要的结构。用JSON.parse结合reviver函数处理。可是得到undefined的诡异结果。
请问下面的代码为何得不到我想要的结果呢?

问题出现的环境背景及自己尝试过哪些方法

运行环境: node V9.11.2

相关代码

/**
 * 过滤测试表格数据
 * @param {String} key 对象键
 * @param {*} value 键值
 */
let filterTestData = (key, value) => {
    if (['id', 'interName', 'opt', 'ruleStr'].includes(key)) {
        return value;
    } else if (key === 'algorithmOptRules') {
        console.log(value instanceof Array)
        let names = []
        value.forEach(ele => {
            names.push(ele['name'])
        })
        return names.join('、')
    } else {
        return undefined;
    }
}
let test = JSON.stringify({
    "id": "5c34650e307f782408c4501b",
    "interId": "5c34650e307f782408c4501b",
    "interName": "接口名字",
    "className": "aaaaaaaa",
    "route": "/a/b/c",
    "opt": "mac", 
    "ruleStr": "00:0A:02:0B:03:0C", //表格显示 6
    "algorithmOptRules": [{ 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "afafafafaf" 
        },
        { 
            "index": 1,
            "algoId": "5c34677c307f781058f179a9",
            "group": "aa",
            "name": "你还"
        }
    ]
})
let newTest = JSON.parse(test, filterTestData)
console.log(newTest); //undefined

你期待的结果是什么?

{ 
  id: '5c34650e307f782408c4501b',
  interName: '接口名字',
  opt: 'mac',
  ruleStr: '00:0A:02:0B:03:0C',
  algorithmOptRules: 'afafafafaf、你还'
}