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

如何将API返回的字符串格式嵌套样式对象转为可调用的JS对象

实现方案

你拿到的API响应是双重序列化的JSON字符串:后端先将样式对象序列化为JSON字符串,之后又将该字符串作为值再次序列化,因此出现了外层引号和内部的转义符。

JavaScript 实现代码

// 1. 拿到API返回的原始字符串
const rawResponse = "\"{\\\"div\\\":{\\\"display\\\": \\\"flex\\\",\\\"flexDirection\\\": \\\"column\\\",\\\"alignItems\\\":\\\"center\\\",\\\"fontFamily\\\":\\\"Helvetica Neue\\\"},\\\"a\\\":{\\\"fontSize\\\": 16, \\\"textAlign\\\": \\\"center\\\",\\\"fontWeight\\\":\\\"bold\\\",\\\"color\\\":\\\"#324F85\\\"},\\\"p\\\":{\\\"fontSize\\\": 34,\\\"textAlign\\\":\\\"center\\\",\\\"color\\\": \\\"#7f8f96d\\\"},\\\"h5\\\": {\\\"fontWeight\\\": \\\"normal\\\",\\\"fontSize\\\": 18,\\\"textAlign\\\":\\\"center\\\"}}\"";

// 2. 第一次parse,去掉外层包裹,得到正常JSON字符串
const innerJson = JSON.parse(rawResponse);

// 3. 第二次parse,转换为目标对象
const targetObj = JSON.parse(innerJson);

// 补充:如果你需求中p的color值为#7f8f96d6,手动修改该属性即可
targetObj.p.color = '#7f8f96d6';

注意事项

如果你用的请求工具(比如Axios、Fetch)默认开启了响应自动反序列化,第一次parse操作会被工具自动完成,你拿到的响应内容已经是内层JSON字符串,直接执行一次JSON.parse即可得到目标对象。

其他语言实现思路

  • 核心逻辑一致,对返回结果连续执行两次JSON反序列化操作即可
  • 如果单次反序列化直接得到字符串值,对该字符串执行第二次反序列化即可

内容的提问来源于stack exchange,提问作者ajay 24

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:04