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
相关产品推荐
相关产品推荐

