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

Go中将存储JSON的字符串切片转为合法JSON并响应HTTP请求的实现

问题说明

现有[]string类型的字符串切片,每个元素均为独立的JSON格式字符串,使用fmt.Println()打印该切片的输出如下:

[ {"field1": "data1", "field2": "data2"}, {"secondField1": "data1", "secondfield2": "data2"}]

需要将处理后的结果作为合法JSON数组,通过HTTP请求的响应返回。

原有错误实现

现有实现代码如下,其中w为http.ResponseWriter类型变量:

jsonString := `"{"field1": "data1",  "field2": "data2"}",
               "{"secondField1": "data1",  "secondfield2": "data2"}"`

json.NewEncoder(w).Encode(jsonString)

该实现会导致输出的JSON格式存在转义错误,无法被调用方正常解析。

正确解决方案

使用Go标准库的json.RawMessage类型处理即可,该类型会通知JSON编码器不对内部内容做二次序列化转义,直接保留原始JSON字符串输出:

jsonArray := make([]json.RawMessage, len(stringSlice))

for i := range stringSlice {
    jsonArray[i] = json.RawMessage(stringSlice[i])
}

// 若要写入HTTP响应,将os.Stdout替换为http.ResponseWriter类型变量w即可
if err := json.NewEncoder(os.Stdout).Encode(jsonArray); err != nil {
    panic(err)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:05