JSON reviver 函数 return 即使 return 也未定义
JSON reviver function returns undefined even with return
function _quotedText(data, config) {
var pathKeys=config.customKey;
console.log(pathKeys); //prints os_platform
var inAuth_data=(JSON.parse(JSON.parse(JSON.parse(data["event.fields.custom_fields.inauth_device_data"])), (key, value) => {
if (key == pathKeys)
{
console.log(value); //prints Android
return value; //returns undefined
}
}));
console.log(inAuth_data); //prints undefined
return inAuth_data; //returns undefined
}
我已经阅读了其他类似的问题并尝试了他们在做什么,但我仍然不明白。为什么返回未定义?
这里的JSON是:
"\"{\\"deviceInfo\\":{\\"permanentId\\":\\"23434433-3333-4444-9581-f9cb641d28f5\\",\\"publicSigningKey\\":\\"MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAzMRW6jXVgqX0QV0EA9h2XnnPvntER5yqPKvD+yLKtxXzBCYMzygEM1nlwBRZhVpNJFvzZ2X+oTLGasdbasjhddasdu0PAWIc1AqKMt6rDEJv4a8bgqqAnXXnvR/QjwtsIq3T59LqivcoB2IPGq7Mof7yRJXKtrEOK2a1b8ixWJ5MBZ06drONhMkzeDTKjenMSM0Hf3BFTlXKCFaZbfShr1OK+wMqWFYrAJsAsufvzwjxKzaZ/RspVuZtfHo0g0z7SxWRBT7+2lKGN0pFyUYebN471n5hZxVMY8Zjfr75QUK1fWIVhzNRc+pH3PhakBeqsnmNncy+XOA7TwIBEQ==\\"},\\"objects\\":[{\\"perm_id\\":\\"READ_PHONE_STATE_DISABLED\\",\\"device_pid\\":\\"READ_PHONE_STATE_DISABLED\\",\\"sdk_version\\":\\"Android-MME-7.8.2\\",\\"data\\":{\\"contact_info_logs\\":[],\\"wifi_connection_logs\\":[{\\"ip\\":\\"111.22.33.44\\",\\"ssid\\":\\"\\\\"iPhone sdf Gucci\\\\"\\",\\"linkspeed\\":\\"72\\",\\"bssid\\":\\"22: 56: 23: 45: 0c: ab\\",\\"rssi\\":\\"-35\\",\\"macaddr\\":\\"a4: ss: ea: 17: dg: ss\\",\\"networkid\\":\\"17\\"}]}}]}\""
磕磕绊绊找到了答案。
但是,似乎正在为 JSON 中的每个对象调用该函数。在
之后
if (key == pathKeys)
被检查它打印了值并返回了值,但是 JSON 字符串中匹配的键之后仍然有对象被覆盖到变量 inAuth_data.
因此,我所要做的就是在 reviver 函数之外声明另一个变量,并在条件为真时为其赋值。
function _quotedText(data, config) {
var pathKeys=config.customKey;
console.log(pathKeys); //prints os_platform
var data = undefined;
var inAuth_data =(JSON.parse(JSON.parse(JSON.parse(data["event.fields.custom_fields.inauth_device_data"])), (key, value) => {
if (key == pathKeys)
{
console.log(value); //prints Android
data = value; //Assigning value of value to data
}
}));
console.log(inAuth_data); //prints Android
return inAuth_data; //returns Android
}
感谢@evolutionxbox 在这方面与我合作。
function _quotedText(data, config) {
var pathKeys=config.customKey;
console.log(pathKeys); //prints os_platform
var inAuth_data=(JSON.parse(JSON.parse(JSON.parse(data["event.fields.custom_fields.inauth_device_data"])), (key, value) => {
if (key == pathKeys)
{
console.log(value); //prints Android
return value; //returns undefined
}
}));
console.log(inAuth_data); //prints undefined
return inAuth_data; //returns undefined
}
我已经阅读了其他类似的问题并尝试了他们在做什么,但我仍然不明白。为什么返回未定义?
这里的JSON是:
"\"{\\"deviceInfo\\":{\\"permanentId\\":\\"23434433-3333-4444-9581-f9cb641d28f5\\",\\"publicSigningKey\\":\\"MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAzMRW6jXVgqX0QV0EA9h2XnnPvntER5yqPKvD+yLKtxXzBCYMzygEM1nlwBRZhVpNJFvzZ2X+oTLGasdbasjhddasdu0PAWIc1AqKMt6rDEJv4a8bgqqAnXXnvR/QjwtsIq3T59LqivcoB2IPGq7Mof7yRJXKtrEOK2a1b8ixWJ5MBZ06drONhMkzeDTKjenMSM0Hf3BFTlXKCFaZbfShr1OK+wMqWFYrAJsAsufvzwjxKzaZ/RspVuZtfHo0g0z7SxWRBT7+2lKGN0pFyUYebN471n5hZxVMY8Zjfr75QUK1fWIVhzNRc+pH3PhakBeqsnmNncy+XOA7TwIBEQ==\\"},\\"objects\\":[{\\"perm_id\\":\\"READ_PHONE_STATE_DISABLED\\",\\"device_pid\\":\\"READ_PHONE_STATE_DISABLED\\",\\"sdk_version\\":\\"Android-MME-7.8.2\\",\\"data\\":{\\"contact_info_logs\\":[],\\"wifi_connection_logs\\":[{\\"ip\\":\\"111.22.33.44\\",\\"ssid\\":\\"\\\\"iPhone sdf Gucci\\\\"\\",\\"linkspeed\\":\\"72\\",\\"bssid\\":\\"22: 56: 23: 45: 0c: ab\\",\\"rssi\\":\\"-35\\",\\"macaddr\\":\\"a4: ss: ea: 17: dg: ss\\",\\"networkid\\":\\"17\\"}]}}]}\""
磕磕绊绊找到了答案。 但是,似乎正在为 JSON 中的每个对象调用该函数。在
之后if (key == pathKeys)
被检查它打印了值并返回了值,但是 JSON 字符串中匹配的键之后仍然有对象被覆盖到变量 inAuth_data.
因此,我所要做的就是在 reviver 函数之外声明另一个变量,并在条件为真时为其赋值。
function _quotedText(data, config) {
var pathKeys=config.customKey;
console.log(pathKeys); //prints os_platform
var data = undefined;
var inAuth_data =(JSON.parse(JSON.parse(JSON.parse(data["event.fields.custom_fields.inauth_device_data"])), (key, value) => {
if (key == pathKeys)
{
console.log(value); //prints Android
data = value; //Assigning value of value to data
}
}));
console.log(inAuth_data); //prints Android
return inAuth_data; //returns Android
}
感谢@evolutionxbox 在这方面与我合作。