共计 682 个字符,预计需要花费 2 分钟才能阅读完成。
我的需求是,输入 sql,返回序列化后的 json 结果。
在 python 中,官方库就可以返回[{'col1': 1, 'col2': '2', 'col3': true}....]
这种带类型的 json 结果。
在 go 中如果已知 sql 返回的列数和列类型,也可以构造一个 struct 进行数据映射, 然后用 json.Marshal
转为 json。
如果 sql 返回的列数和行类型未知,就很难受了,在 go/mysql 的 官方 wiki 案例 中对于匿名的结果,使用了 interface 或者 sql.RawBytes,但这两种替代方式在json.Marshal
后都变成了 base64 encode 后的 string,既丢失了类型也变异了结果(https://stackoverflow.com/questions/32501784/the-sqlx-library-gives-weird-base64-encoded-looking-results)
请问各位在实际业务中遇到这个问题是怎么处理的?
- https://stackoverflow.com/questions/14177862/how-to-marshal-a-byte-uint8-array-as-json-array-in-go/78662958#78662958
- https://stackoverflow.com/questions/34089750/marshal-byte-to-json-giving-a-strange-string
在其他语言中很自然的 object 序列化为原类型,在 go 的 json.Marshal 中怎么就全变成 string 了
正文完