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

Go如何处理多反斜杠转义字符串 解决strconv.Unquote语法报错问题

Go处理双重转义JSON字符串方案

问题原因

你直接调用strconv.Unquote报错的核心原因是:该方法遵循Go语言字符串字面量的转义规则,而你拿到的数据源是JSON转义格式的,两者转义规则不兼容,遇到\/这类JSON特有的转义序列就会触发invalid syntax错误。

你手头的数据本质是两次JSON序列化的产物:先把包含UA的结构序列化为JSON字符串,再把这个字符串作为值做了第二次JSON序列化,因此外层多了一层引号,内部转义符也多了一层转义,和PHP中两次json_decode的处理逻辑对应,Go同样可以通过两次json.Unmarshal完成解析。

可运行实现代码

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	// rawStr 为你从数据源拿到的原始字符串,此处示例值为Go字面量写法
	rawStr := "\"{\\\"u\\\":\\\"Mozilla\\\\/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox\\\\/11.0 (via ggpht.com GoogleImageProxy)\\\"}\""

	// 第一次反序列化:剥离外层引号,处理第一层转义,得到标准JSON字符串
	var innerJSON string
	if err := json.Unmarshal([]byte(rawStr), &innerJSON); err != nil {
		panic(err)
	}

	// 第二次反序列化:将标准JSON字符串解析为目标结构,这里用map演示,也可替换为自定义结构体
	var res map[string]string
	if err := json.Unmarshal([]byte(innerJSON), &res); err != nil {
		panic(err)
	}

	fmt.Println("解析得到的UA:", res["u"])
}

运行输出

解析得到的UA: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:04