You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js后端如何清理Android API请求中的嵌套引号?

处理Android端发送的格式异常请求体数据

Android移动端向Node.js后端API发送的请求体格式如下:

{ 
    "openingHour":['"02:00PM"','"03:00PM"']
}

后端仅使用JavaScript处理时,需要将数据转换为以下两种合法格式之一:

{ 
    "openingHour":["02:00PM","03:00PM"]
}

或者

{ 
    "openingHour":['02:00PM','03:00PM']
}

解决方案

方法一:先处理原始字符串再解析

由于原始请求体不符合标准JSON格式(数组用单引号包裹,元素又嵌套双引号),默认的JSON.parse会解析失败。可以先获取原始请求的字符串,替换掉多余的引号后再解析:

以Express框架为例,先禁用默认的JSON解析器,获取原始请求体:

const express = require('express');
const app = express();

// 用raw中间件获取原始请求体
app.use(express.raw({ type: 'application/json' }));

app.post('/your-api-endpoint', (req, res) => {
  try {
    // 将Buffer转为字符串
    const rawBodyStr = req.body.toString();
    
    // 方案1:把嵌套的双引号去掉,转为标准JSON格式
    const cleanedStr = rawBodyStr.replace(/"'/g, '"').replace(/'"/g, '"');
    // 或者方案2:把外层单引号保留,去掉内部双引号
    // const cleanedStr = rawBodyStr.replace(/"'/g, "'").replace(/'"/g, "'");
    
    const parsedData = JSON.parse(cleanedStr);
    res.json(parsedData);
  } catch (err) {
    res.status(400).send('请求体格式异常');
  }
});

方法二:用宽松JSON解析库处理后清理元素

如果不想手动处理字符串,可以使用支持宽松格式的JSON解析库(比如json5)先解析原始数据,再清理数组元素的多余引号:

  1. 先安装依赖:
npm install json5
  1. 编写处理代码:
const JSON5 = require('json5');

// 模拟原始请求体字符串
const rawBody = `{ 
    "openingHour":['"02:00PM"','"03:00PM"']
}`;

// 用JSON5解析宽松格式的JSON
const parsedData = JSON5.parse(rawBody);

// 清理数组元素首尾的双引号
parsedData.openingHour = parsedData.openingHour.map(item => {
  return item.replace(/^"|"$/g, '');
});

// 此时parsedData即为符合要求的格式
console.log(parsedData);

内容的提问来源于stack exchange,提问作者Keshav Suman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:50:52