首页 > 解决方案 > json stringify删除括号外的文本

问题描述

我正在使用firebase功能。像这样的代码。

let transaction_id;
let signature_key;   
switch (req.get('Content-Type')) {
        case 'application/json':
    
          ({transaction_id} = req.body);
          ({signature_key} = req.body);
    
          break;
    
        case 'application/octet-stream':
          transaction_id = req.body.toString();
          signature_key = req.body.toString();
          break;
    
        case 'text/plain':
          transaction_id = req.body;
          signature_key = req.body;
          break;
    
        case 'application/x-www-form-urlencoded':
          ({transaction_id} = req.body);
          ({signature_key} = req.body);
          break;
      }
      console.log(transaction_id);

它仍然显示未定义。控制台日志 req.body 未显示 json 响应。 在此处输入图像描述 我尝试 JSON.Stringify。

Transaction status is pending {"transaction_id":"1c133665-d73d-45b6-b183-8d263644736b","signature_key":"TzbgFmtPe5qLu1MPcId3MoRcyU%2FBRWHJ6AdQQdLHN6ABy0SpB56F4jYUPFLMemPYL8KhruaQvWWYpAUEXJhcnpQ0Qn%2FHbE0GRwx1Em3Hc%2FWi1mofPUafALccvUmRR3QE","status":"OK","amount":"1020000.00","shipping_address":{},"payment_type":"30_days","transaction_status":"pending","transaction_time":1593094347,"order_id":"P-2020237834543138"}

当我执行 JSON.stringify 时,它会显示在数据上方。如何删除大括号 {} 外的文本,以便我可以转换为 json 以获取 transaction_id 和 signature_key 的值?或者如何直接从 JSON.stringify 输出中获取数据?

标签: javascript

解决方案


如果您想在外大括号之前和之后省略数据,那么我建议运行正则表达式

str.replace(/^[^{]*(.*)[^}]*$/,'$1');

结果可以放入 JSON.prase 函数中。

概括:

let trx_id = JSON.parse(result.replace(/^[^{]*(.*)[^}]*$/,'$1')).transaction_id;

推荐阅读