Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON reviver函数返回未定义,即使返回_Javascript_Json_Reviver Function - Fatal编程技术网

Javascript JSON reviver函数返回未定义,即使返回

Javascript JSON reviver函数返回未定义,即使返回,javascript,json,reviver-function,Javascript,Json,Reviver Function,我读过其他类似的问题,也试过他们在做什么,但我还是不明白。为什么它返回未定义 这里讨论的JSON是: 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.fie

我读过其他类似的问题,也试过他们在做什么,但我还是不明白。为什么它返回未定义

这里讨论的JSON是:

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中的每个对象都调用了该函数。之后

如果(键==路径键)

选中后,它将打印值并返回值,但是在匹配键之后的JSON字符串中仍有对象被覆盖到变量inuth_data上

因此,我所要做的就是在reviver函数之外声明另一个变量,并在条件为true时为其赋值

"\"{\\\"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\\\"}]}}]}\""
}


感谢@evolutionxbox在这方面与我合作。

为什么要多次解析相同的数据<代码>(JSON.parse)(JSON.parse)(JSON.parse(因为数据被字符串化了三次,例如:“{\\\\”deviceInfo\\\”:{\\\\“permanentId\\”:\\\\”8f408412-6934-4bf8-9581-………啊,是Mr thrice!你不需要多次解析数据。这也会导致不匹配的大括号。请尝试删除除一个以外的所有内容。
JSON。parse
尝试过这一点,“console.log(value);//prints Android”现在什么也不打印。您能用JSON的一个新版本更新这个问题吗?
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