如何从 api 响应中删除不需要的字符

Posted

技术标签:

【中文标题】如何从 api 响应中删除不需要的字符【英文标题】:How to remove unwated characters from api response 【发布时间】:2022-01-12 18:41:34 【问题描述】:

我正在 API 响应中的 NodeJS 中创建 api 我得到 / 这个字符 以下是我的 api 响应:

 static async getAdminOrders(logId, callback) 
  
  logger(logId, `Getting all orders of the stylist $logId`);
  const queryStr = 'SELECT order_details FROM stylist_order';
  Util.executeQuery(queryStr,logId).then((result) => 
  callback(false, result || [], Util.statusCodes.SUCCESS);
  
  var str = JSON.stringify(result);

  // Remove \ from the string
  var str1 = str.replace(/\\/g,'');

  // Convert updated string back to object
  var newObj = JSON.parse(str1);
  console.log(newObj);

).catch((error) => 
  logger(logId, error);
  callback(true,  message: 'Failed to fetch order detials' , Util.statusCodes.INTERNAL_SERVER_ERROR);
);

在控制台中删除不需要的字符后,它不会返回对象,但是当我执行console.log(str1) 时,它的返回字符串没有/。问题是 newObj 未显示。

有人告诉我我做错了什么。

【问题讨论】:

您的 API JSON.stringifying 数据两次。修复你的后端,而不是在前端乱搞。 为什么需要替换字符?它只是逃避引号。只需调用 JSON.parse 而无需尝试替换它们。 请不要向 *** 发送相同问题的垃圾邮件以获得更多关注。 ***.com/questions/70270363/… 【参考方案1】:

反斜杠转义了" 字符,因此它们并不是真正不需要的。当您删除它们时,您可能会损坏有效负载,因为JSON.parse() 无法再正确读取字符串。 我会尝试像这样解析数据字符串本身:

static async getAdminOrders(logId, callback) 
  
  logger(logId, `Getting all orders of the stylist $logId`);
  const queryStr = 'SELECT order_details FROM stylist_order';
  Util.executeQuery(queryStr,logId).then((result) => 
  callback(false, result || [], Util.statusCodes.SUCCESS);
  
  for(let i = 0; i < result.data; i++)
    result.data[i].order_details = JSON.parse(result.data[i].order_details)
  
  
  console.log(result);

).catch((error) => 
  logger(logId, error);
  callback(true,  message: 'Failed to fetch order detials' , Util.statusCodes.INTERNAL_SERVER_ERROR);
);

【讨论】:

特殊字符已被删除。 这是我得到的响应 `RowDataPacket order_details: '"id": 4180207272112, "name": "#1190"` 这是什么RowDataPacket 响应 好像是这样的:***.com/a/31229034/9224578 就像普通对象一样访问它。

以上是关于如何从 api 响应中删除不需要的字符的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WEB API 请求和响应 XML 中删除命名空间?

如何从 JSON 响应中删除不需要的标签

如何从 api 响应中获取特定的字符串?

.NET Core:从 API JSON 响应中删除空字段

如何在 laravel 中使用不记名令牌从 api 请求中获取响应?

使用 JMeter,如何从 API 的响应正文中提取字符串并将其保存到 csv 文件?