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

Poco框架JSON对象序列化出现斜杠转义异常,求解决方案

解决Poco JSON序列化时斜杠被自动转义的问题

这其实是Poco JSON库的默认行为——为了兼容某些场景(比如避免和HTML标签中的</>冲突),它会自动把正斜杠/转义成\/。虽然根据JSON规范,转义后的\/和原始的/都是合法的,绝大多数JSON解析器都能正确处理,但如果你确实需要输出不转义的斜杠,可以通过调整序列化选项来实现。

解决方案代码

把原来直接调用obj.stringify(ss8)的代码,替换成带自定义选项的序列化方式:

#include "Poco/JSON/Stringifier.h"

// ... 你的其他业务代码 ...

std::stringstream ss8;
// 移除默认选项中的ESCAPE_SLASHES,禁止转义正斜杠
Poco::JSON::Stringifier::stringify(
    obj, 
    ss8, 
    0,  // 缩进值,0表示不格式化压缩输出
    Poco::JSON::Stringifier::OPTIONS_DEFAULT & ~Poco::JSON::Stringifier::ESCAPE_SLASHES
);

std::ostream& o = session.sendRequest(req);
std::cout << ss8.str() << std::endl;

代码说明

  • Poco::JSON::Stringifier::OPTIONS_DEFAULT包含了库默认的所有序列化规则,其中就包含ESCAPE_SLASHES(转义正斜杠)这个选项。
  • 通过& ~Poco::JSON::Stringifier::ESCAPE_SLASHES的位运算,我们从默认选项中移除了转义斜杠的规则,这样序列化后的JSON就会保留原始的/,而不会转义成\/。

如果你的场景中接收方严格要求不转义的斜杠,这个修改就能解决你的问题。

内容的提问来源于stack exchange,提问作者Preben Enhed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:47:35